[英]What's wrong with my JavaScript regex / regex syntax?
我需要一個正則表達式來使用符合這些規則的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;
})
當您不使用文字形式(/ [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或+1,則應該忽略它將包括在該字段中允許的10位有效字符... 0-9,()和 -
這可以與表達式匹配:
/^(?:\+?1)?[()-]*(?:\d[()-]*){10}$/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.