'|' 是什么意思 (管道字符)在正则表达式中是什么意思?

IT技术 javascript jquery regex
2021-02-26 15:29:57

这个正则表达式来自JQuery,|意思是or,但是包括哪两部分来选择呢?

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

是吗[^>]*$| #([\w\-]*)$(<[\w\W]+>)[^>]*$| #([\w\-]*)$)或者是其他东西?

4个回答

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

正则表达式可视化

调试器演示

简单地: x|y

匹配xy

例如:/green|red/匹配greengreen appleredred apple.

在 mdn 上查看正则表达式

此答案已添加到“其他”下Stack Overflow 正则表达式常见问题解答中
2021-05-17 15:29:57

用缩进编写多行有助于:

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

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

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

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

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

/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/
为什么在这个正则表达式中需要非捕获组?
2021-05-11 15:29:57