什么是'|' (管道字符)是指正则表达式?

时间:2014-03-05 03:25:52

标签: javascript jquery regex

这个正则表达式来自JQuery,|表示or,但是包含哪两个部分可供选择?

/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/

[^>]*$ | #([\w\-]*)$(<[\w\W]+>)[^>]*$ | #([\w\-]*)$)或其他什么?

4 个答案:

答案 0 :(得分:3)

[^#<]*(<[\w\W]+>)[^>]*$#([\w\-]*)$

Regular expression visualization

Debuggex Demo

答案 1 :(得分:1)

简单地说:x|y

匹配xy

例如:/green|red/匹配green中的green applered中的red apple.

See regular expression on mdn

答案 2 :(得分:0)

它是[^#<]*(<[\w\W]+>)[^>]*$#([\w\-]*)$,并且都在非捕获组中。

/^(?:EXP)$)/ # EXP => A|B

/^(?:A|B)$)/ # A => [^#<]*(<[\w\W]+>)[^>]*$, B => #([\w\-]*)$

/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/

答案 3 :(得分:0)

使用缩进编写多行有助于:

^
(?:
  [^#<]*
  (
    <
    [\w\W]+
    >
  )
  [^>]*
  $
|
  #
  (
    [\w\-]*
  )
  $
)

你的第二个猜测是正确的。 |的优先级低于连接(即在彼此之后写表达式)。