对于正则表达式大家都应该是比较熟悉的..所以说 ' | ' 这个符号相信大家应该都不陌生..
下面就说一下我在最近书写正则的或中遇到的问题, 算是对自己问题的记录..
问题 : 用正则判断1-100之间的整数
最初解 ( 错误版本 ) : /^[1-9]\d?|100$/
这个看起来一切正常...但是...
这个就比较纠结了...于是有了下面的版本...
最终解 (正确版本) : /^([1-9]\d?|100)$/
嗯..这个看起来正常了..
总结 : 最初虽然知道正则的"或"如果不加括号的话会直接相当于在正则串的首尾添加括号( xxx|xxx - > (xxx|xxx) )..但是没有仔细考虑过开始符 ( ^ ) 和结束符 ( $ )
在这种情况下 /^[1-9]\d?|100$/ 会相当于 /(^[1-9]\d?|100$)/ ..也就是 ^[1-9]\d? 和 100$ 如果能匹配成功则返回true..所以说上面的100000000以1到9之间的数开头..可以匹配..而abc100以100结尾也可以匹配..因此都返回true..
总结成一句话就是正则的"或"不加括号会把正则分成开始(纯开始)到 ' | ' 和 ' | ' 到结尾(纯结尾)两部分..