search

Home  >  Q&A  >  body text

javascript - js 正则: `^(ab|a)$` 与 `^[ab|a]$` 匹配的值不同

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

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

PHP中文网PHP中文网2822 days ago526

reply all(6)I'll reply

  • PHP中文网

    PHP中文网2017-04-10 15:20:47

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

    reply
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 15:20:47

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

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 15:20:47

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

    reply
    0
  • PHPz

    PHPz2017-04-10 15:20:47

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

    reply
    0
  • ringa_lee

    ringa_lee2017-04-10 15:20:47

    /^[ab|a]$/
    

    这个是匹配a,b,|

    reply
    0
  • 黄舟

    黄舟2017-04-10 15:20:47

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

    reply
    0
  • Cancelreply