var regular = /^(\(?:0\d{2,3}\))|(?:0\d{2,3})/大家看看这段正则不知道为什么,它居然匹配:(021 我有点搞不懂了,明明我写的是2段表达式然后在用|去or匹配带()或者不带都通过 也就是开头可以是0或者(开头的但是如果是括号开头的话必须以)结尾,开始为什么我现在半个括号也是通过的?现在我是知道的 这段正则有问题的 谁帮我翻译下我这么写的问题所在和我这样写是怎么样一个表述,非常感谢还有()里面是指所有的内容都必须实现才匹配????
调试欢乐多
var re = /^(0\d{2,3}|\(0\d{2,3}\))$/;
不信你在这个工具上试试:
http://www.renrousousuo.com/tools/regex_debug.html你最先的那个var regular = /^(\(?:0\d{2,3}\))|(?:0\d{2,3})/
应该改为
/(?:\(0\d{2,3}\))|(?:0\d{2,3})/g
这样就行了。修改的部分:
1. 去掉^
2. 把?:放到第一个括号后!因为第一个括号才是代表分组!