这个正则表达式来自JQuery,|
意思是or
,但是包括哪两部分来选择呢?
/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/
是吗[^>]*$
| #([\w\-]*)$
或(<[\w\W]+>)[^>]*$
| #([\w\-]*)$)
或者是其他东西?
这个正则表达式来自JQuery,|
意思是or
,但是包括哪两部分来选择呢?
/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/
是吗[^>]*$
| #([\w\-]*)$
或(<[\w\W]+>)[^>]*$
| #([\w\-]*)$)
或者是其他东西?
这是 [^#<]*(<[\w\W]+>)[^>]*$
和#([\w\-]*)$
用缩进编写多行有助于:
^
(?:
[^#<]*
(
<
[\w\W]+
>
)
[^>]*
$
|
#
(
[\w\-]*
)
$
)
你的第二个猜测是正确的。The 的|
优先级低于串联(即在彼此之后编写表达式)。
它是[^#<]*(<[\w\W]+>)[^>]*$
or #([\w\-]*)$
,并且都在非捕获组中。
/^(?:EXP)$)/ # EXP => A|B
/^(?:A|B)$)/ # A => [^#<]*(<[\w\W]+>)[^>]*$, B => #([\w\-]*)$
/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/