Javascript 正则表达式有问题!
我对电话号码的正则表达式使用了以下模式Javascript 正则表达式有问题!,javascript,regex,Javascript,Regex,我对电话号码的正则表达式使用了以下模式 pattern="[0-9 -+]+$"; 电话号码可能包含数字、连字符、空格和加号+。当我只使用数字时,它就起作用了。当使用数字和字母时,它不起作用 有什么问题,请务必告诉我 提前感谢它将-解释为范围的一部分。试试这个: pattern="^[0-9 +-]+$"; -或者需要转义\-或者像这样移动到结尾,谢谢Tim。它需要以^开头,而-需要以^转义\ pattern=/^[0-9 \-+]+$/; 它需要以“^”开头,因为它是字符串开头的锚点,如
pattern="[0-9 -+]+$";
电话号码可能包含数字、连字符、空格和加号+。当我只使用数字时,它就起作用了。当使用数字和字母时,它不起作用
有什么问题,请务必告诉我
提前感谢它将-解释为范围的一部分。试试这个:
pattern="^[0-9 +-]+$";
-或者需要转义\-或者像这样移动到结尾,谢谢Tim。它需要以^开头,而-需要以^转义\
pattern=/^[0-9 \-+]+$/;
它需要以“^”开头,因为它是字符串开头的锚点,如果没有,它将验证以任何内容开头的字符串,只要它们以数字、空格、-或结尾+ -需要转义,因为它是一个特殊字符,并且具有除-以外的含义。而+是一个特殊字符,如果要将其视为类外的+,则需要对其进行转义,而仅在类内]^-\则需要进行转义 所以在课堂外逃跑
.^$|*+?()[{\
和内部逃生:
]^-\
但是,大多数实现允许您在类中转义所有12个特殊字符而不会出错,并且只有在转义非特殊字符时,它们才会给出一个错误,这意味着加号之前的额外\也可以正常工作
pattern="^[0-9 \-\+]+$"
我总是发现使用使事情变得更容易,因为它允许我看到错误。因为-dash被用作regexp中括号内的范围符号,所以您需要将其转义,或者将其放在最后:
pattern="[0-9 \-+]+$";
// or
pattern="[0-9 +-]+$";
您可能还希望以“^”开头regexp,以确保整个字符串与之匹配,而不仅仅是结尾:
pattern="^[0-9 +-]+$";
您的正则表达式将失败,即使在进行David建议的更正之后。因为它匹配一个或多个数字和+,-的任意组合。例如,它匹配99++++-12 这里有一个更好的版本,它将999-999-9999格式的数字与+9999格式的可选国家代码(两到四位数)匹配
(\+\d{2,4}\s*)?(\d{3})-(\d{3})-(\d{4})
那么9++23++-13是一个有效的电话号码吗?我对答案做了一点编辑:如果你把+放在字符类的开头或结尾,“-也不需要转义”。@Fabien:\s也包含制表符。@Tim:yep,\s应该是,对不起。除非你把连字符放在奇数的地方,否则这与英国号码不匹配。例如,伦敦号码的正确国际格式为+44 20 xxxx xxxx。匹配所有地区在印度是一项困难的任务,它是+91\d{10}-这就是为什么我特别说它匹配3+3+4个号码。我只是指出[0-9+-]模式的错误。