我有一个简单的ajax表单,我正在尝试验证它
我正在尝试使用正则表达式来做到这一点。这是我到目前为止所拥有的。
var reg = new RegExp("/[0-9]{10}/");
$("#call_form").bind("submit", function() {
if ($("#call_number").val().length < 1 && reg.test($("#call_number").val())) {
$("#call_error").show();
return false;
}
});
我知道问题与正则表达式有关,就好像我删除了这部分代码,它验证了该框具有值。
编辑:这是我使用的最终正则表达式
var regEx = new RegExp("/[0-9]/");
$("#call_form").bind("submit", function() {
if ($("#call_number").val().length != 10 && !$("#call_number").val().match(regEx)) {
$("#call_error").show();
$.fancybox.resize();
return false;
}
});
编辑2 使用这里的建议就是我所使用的,它允许空格和破折号,然后在检查时被删除
$("#call_form").bind("submit", function() {
var Phone = $("#call_number").val().replace(/\D+/g,'');
if (Phone.length != 10) {
$("#call_error").show();
$.fancybox.resize();
return false;
}
});
这是我使用的 - 它很简单,如果有人正在搜索相同的内容,只需发布即可。
var a = PHONE_FROM_FIELD;
var filter = /^[0-9-+]+$/;
if (filter.test(a)) {
return true;
}
else {
return false;
}
干杯!
你的正则表达式对我来说效果很好...你可以将其缩短为
/[0-9]{10}/
。
您的问题在这里:
$("#call_number").val().length < 1
。如果数字有 10 个字符长,它永远不会小于 1,不是吗?
你的意思可能是这样的:
$("#call_number").val().length === 10
没有人指出您最初的努力出了什么问题 - 是斜杠(/)。当调用 RegExp 作为构造函数时,不需要斜杠(斜杠是表示正则表达式文本的标记),例如:
var re = /\w+/i;
相当于:
var re = new RegExp('\\w+','i');
请注意,特殊字符必须引用反斜杠。
最后一件事 - 数字中允许有空格。不过,您可以在测试或存储之前将其删除。用户发现读取 3 或 4 位数字块中的数字要容易得多,例如
类似这样的:
var regEx = /^(\+\d)*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/;
$("#call_form").bind("submit", function() {
var val = $("#call_number").val();
if (!val.match(regEx)) {
$("#call_error").show();
return false;
}
});
function validate_Phone_Number() {
var number = $('field_Id').val();
var filter = /^((\+[1-9]{1,4}[ \-]*)|(\([0-9]{2,3}\)[ \-]*)|([0-9]{2,4})[ \-]*)*?[0-9]{3,4}?[ \-]*[0-9]{3,4}?$/;
if (filter.test(number)) {
return true;
}
else {
return false;
}
}
这是一个使用 jQuery 的方法,并对
keypress
和 keyup
进行相同的验证。
jQuery 代码
const goodColor = "#0C6";
const badColor = "#FF0000";
const $mobile_validation = $('#mobile_validation');
$('#mobile').on('keyup keypress', function(e) {
if (e.which == 46 || e.which == 45 || e.which < 48 || e.which > 57) {
event.preventDefault();
}
if(this.value.length !=10 ){
$mobile_validation.text("Please enter 10 digit mobile number ");
$mobile_validation.css("color", badColor);
}
if(this.value.length ===10 ){
$mobile_validation.text("Good!");
$mobile_validation.css("color", goodColor);
}
});
HTML 代码
<input type="text" id="mobile" class="form-control" name="telephone" maxlength="10">
<span id="mobile_validation"></span>
// check phone number validation
function validatePhoneNumber(number)
{
count=number.length;
if(number[0]!=" " && number[0]!="-" && number[count-1]!=" " && number[count-1]!="-")
{
temp=number.replace(" ", "");
temp=temp.replace("-", "");
if($.isNumeric(temp))
{
if(temp.length>=7 && temp.length<=12)
{
flag=1;
for(i=1;i<count;i++)
{
if(number[i]=="-" || number[i]==" ")
{
if(number[i-1]=="-" || number[i-1]==" " || number[i+1]=="-" || number[i+1]==" ")
{
flag=0;
}
}
}
if(flag==1)
{
valid=1;
}
else
{
valid=0;
}
}
else
{
valid=0;
}
}
else
{
valid=0;
}
}
else
{
valid=0;
}
return valid;
}