簡體   English   中英

我的JavaScript正則表達式/正則表達式語法有什么問題?

[英]What's wrong with my JavaScript regex / regex syntax?

我需要一個正則表達式來使用符合這些規則的javascript / jquery ...

  • 它將包括10位數字
  • 如果有前導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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM