教程里写:
替换,"或"操作 字符具有高于替换运算符的优先级,使得"m|food"匹配"m"或"food"。若要匹配"mood"或"food",请使用括号创建子表达式,从而产生"(m|f)ood"。
可是下面这两个表达式都返回 true
/m|food/.test('mood')
/m|food/.test('m')
那 | 的优先级怎么算呢
1
geelaw 2018-08-07 16:42:13 +08:00 1
因为 m|food 匹配了 mood 中的 m
|
2
wweir 2018-08-07 16:51:29 +08:00
还是喜欢 [mf]ood,(mood|food) 也还好
至于优先级什么的,对于正则这种有百家方言的玄学,不考虑了,只要我写的东西是对的就行。怕出错,多上括号就好了 |
4
leaves7i 2018-08-07 16:59:38 +08:00 via Android
你少写了括号?
教程这不是说了,请使用 mood|food 或 (m|f)ood |
5
mingl0280 2018-08-07 17:12:45 +08:00
1. m|food -> mood,匹配到了 m
2. m|food -> m,还是匹配到了 m 3.正确操作:(m|f)ood 或者[mf]ood |
6
bumz 2018-08-07 17:19:12 +08:00
/^m|food$/.test('mood') // false
/^m|food$/.test('m') // true |
7
bumz 2018-08-07 17:19:57 +08:00
不加 ^...$ 的话只要子串识别就会返回 true
|
8
weixiangzhe 2018-08-08 02:00:56 +08:00 via iPhone
楼上还是错了
/^(m|food)$/.test('mood') // false /^(m|food)$/.test('m') // true |
9
weixiangzhe 2018-08-08 02:04:07 +08:00 via iPhone
楼主要的是 /[mf]ood/
|