‘|’是什么 意味着在这个正则表达式?

这个正则表达式来自JQuery和“|” 是指“或”,但包括哪两个部分可供选择?

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

它是[^>]*$ | #([\w\-]*)$()[^>]*$ | #([\w\-]*)$)还是其他什么?

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

正则表达式可视化

Debuggex演示

简单地说: x|y

匹配xy

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

请参阅mdn上的正则表达式

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

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

用缩进写多行有助于:

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

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