2

我目前正在使用带有 jQ​​uery 1.10 的 jQuery 验证引擎。在查看了验证脚本本身(电话号码是自定义类型)之后,我注意到它使用了以下正则表达式:

/^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/

我想要做的也是允许“TEXT”和“TEXTWO”作为可接受的值。我试过了:

/^?(TEXT|TEXTTWO)^?([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/

......以及主题的几个变化都没有成功。

4

2 回答 2

2

对你有好处!但似乎只有一件事你误解了:^是一个——它匹配一个字符串的开头——它不能被量化,例如通过成为可选的,在字符串的某些部分已经出现之后?出现也没有意义匹配,从那以后它肯定不是字符串的开头。试试这个:

/^TEXT|TEXTTWO|([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/

因此,您对交替 ( |) 的想法是正确的。请注意,交替是正则表达式中所有运算符中优先级最低的之一,因此此处不需要分组。

于 2013-05-29T18:13:36.817 回答
0

这个怎么样:

/^(TEXT|TEXTTWO|([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?)$/
于 2013-05-29T18:13:59.697 回答