javascript - js 正则: `^(ab|a)$` 与 `^[ab|a]$` 匹配的值不同
PHP中文网
PHP中文网 2017-04-10 15:18:47
0
6
532

(ab|a) [ab|a] (a|b) [a|b] 基本是等价的。(完全不等价,一时脑抽)

但是为何:^(ab|a)$^[ab|a]$ 匹配的值不同?

  • ^(ab|a)$ 匹配 aba

  • ^[ab|a]$ 匹配 ab

PHP中文网
PHP中文网

认证0级讲师

reply all(6)
Ty80

[]和()是不一样的,在[]里面元字符将失去原本特殊的含义,变成只是字符本身,所以[a|b]是可以匹配里面三个字符中的任意一个,而(a|b)是匹配a或者b并作为一个分组。
说的不对的也请大家纠正

伊谢尔伦

() 和 [] 的用法是不一样的, 在 [] 中只有2种转义: ^ 开头, 或者 1-9 这样表示范围的
另外还有一个坑爹的事, [] 只能匹配单个字符, 比如你汉子就会被拆开成 2 个 字符 , 无法匹配到

大家讲道理

正则表达式中的(...)[...]并不是等价的吧。(...)代表的是一个分组里面包含的是正则表带式并可以被后文引用;而[...]代表的是字符集合,匹配所包含的任意一个字符,并不能被后面的表达式引用。

PHPzhong

[ab]的意思是要么匹配a要么匹配b,并不是匹配ab。

左手右手慢动作
/^[ab|a]$/

这个是匹配a,b,|

黄舟

http://zh.wikipedia.org/zh-cn/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%...
手册写得很清楚两种括号的用途

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template