我需要一个正则表达式来使用符合这些规则的javascript / jquery ......
1
或+1
则应忽略0-9
,()
和-
我在Snipplr(第一个)发现了一个正则表达式,但它不起作用。首先,我甚至不确定该正则表达式是否符合我的规则。其次,它允许输入&^%$$#%^adfafsd
。我相信错误在我的代码而不是正则表达式。例如,是否应该在表达式周围引用?
以下是应该验证电话字段的代码......
$('#phone').bind('blur', function() {
var pattern = new RegExp("^(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})$");
if(pattern.test($('#phone').val())){
$("#phone").addClass("error");
return false;
}else{
$("#phone").removeClass("error");
return true;
}
return true;
})
答案 0 :(得分:4)
当你不使用文字形式(/ [regex] /)时,你需要转义正则表达式字符串。试试这个:
var regex = /^(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})$/;
if(regex.test($('#phone').val()){ ... }
答案 1 :(得分:2)
如果有前导1或+1则应忽略 它将包括10位数字 字段中允许的有效字符是... 0-9,()和 -
这可以与表达式匹配:
/^(?:\+?1)?[()-]*(?:\d[()-]*){10}$/