我目前正在使用带有jQuery 1.10的jQuery验证引擎。探究验证脚本本身(电话号码是一种自定义类型)后,我注意到它利用了以下正则表达式:
/^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/
我正在尝试做的是也允许“ TEXT”和“ TEXTTWO”作为可接受的值。我试过了:
/^?(TEXT|TEXTTWO)^?([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/
...以及主题的几种变体而没有成功。
最佳答案
对您的尝试有好处!但是似乎只有一件事您误会了:^
是一个锚点-它匹配字符串的开头-无法量化,例如通过?
设置为可选,在字符串的某些部分已经匹配之后出现也不有意义,因为从那时起,它肯定不是字符串的开头。尝试以下方法:
/^TEXT|TEXTTWO|([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})((x|ext|extension)[ ]?[0-9]{1,4})?$/
因此,您有了交替(
|
)的正确想法。请注意,在正则表达式中,交替具有所有运算符中最低的优先级之一,因此此处无需分组。