请教一个奇怪的正则表达式的结果
javascript吧
全部回复
仅看楼主
level 4
chenqz0826 楼主
有如下正则表达(请注意我两边故意没有加圆括号):
var patt=/^1[0-9][0-9]|2[0-9][0-9]|300$/;
当接下来用patt.test(300100)时,结果为false,
而用patt.test(300200)时,结果为true.
为什么会不一样,“100”和“200”都是正则中可以匹配得到的字符串,为什么会不一样?
2022年02月21日 06点02分 1
level 12
^1[0-9][0-9] 匹配开头100到199 后面不管是什么
| 或的意思
2[0-9][0-9] 这匹配上了 200
| 或的意思
300$ 匹配结尾为300 前面不管是什么
所以还是加上括号[懒得理]
var patt = /^(1[0-9][0-9]|2[0-9][0-9]|300)$/;
也可以改成
var patt = /^([12]\d\d|300)$/;
2022年02月21日 06点02分 2
多谢。也就是说当匹配300200时,可以匹配上200,不管前后是什么,所以为True,但当匹配300100时,即不是以300结尾,也不是以100开头,也找不到200,所以为False了。。。?
2022年02月21日 08点02分
level 5
大哥私聊
2022年02月21日 13点02分 3
level 5
2022年02月24日 08点02分 4
用一次学一次 忘一次[泪]
2022年02月24日 08点02分
1