我目前正在使用带有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})?$/


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

09-19 14:42