Что означает "|" (символ трубы) означает в регулярном выражении?
Это регулярное выражение происходит от JQuery, и |
средства or
, но какие две части включены, чтобы выбрать?
/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/
Это [^>]*$
| #([\w\-]*)$
или же (<[\w\W]+>)[^>]*$
| #([\w\-]*)$)
или что-то другое?
4 ответа
Решение
Это [^#<]*(<[\w\W]+>)[^>]*$
а также #([\w\-]*)$
Просто: x|y
Соответствует либо x
или же y
,
Например: /green|red/
Матчи green
в green apple
а также red
в red apple.
Написание многострочного с отступом помогает:
^
(?:
[^#<]*
(
<
[\w\W]+
>
)
[^>]*
$
|
#
(
[\w\-]*
)
$
)
Ваше второе предположение верно. |
имеет более низкий приоритет, чем конкатенация (т.е. написание выражений после друг друга).
Это [^#<]*(<[\w\W]+>)[^>]*$
или же #([\w\-]*)$
и оба в не захватывающей группе.
/^(?:EXP)$)/ # EXP => A|B
/^(?:A|B)$)/ # A => [^#<]*(<[\w\W]+>)[^>]*$, B => #([\w\-]*)$
/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/