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