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

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

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

  • ^(ab|a)$ 匹配 aba

  • ^[ab|a]$ 匹配 ab

PHP中文网
PHP中文网

认证0级讲师

全部回复(6)
PHP中文网

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

伊谢尔伦

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

大家讲道理

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

PHPz

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

ringa_lee
/^[ab|a]$/

这个是匹配a,b,|

黄舟

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号