Что означает "|" (символ трубы) означает в регулярном выражении?

Это регулярное выражение происходит от JQuery, и | средства or, но какие две части включены, чтобы выбрать?

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

Это [^>]*$ | #([\w\-]*)$ или же (<[\w\W]+>)[^>]*$ | #([\w\-]*)$) или что-то другое?

4 ответа

Решение

Это [^#<]*(<[\w\W]+>)[^>]*$ а также #([\w\-]*)$

Визуализация регулярных выражений

Debuggex Demo

Просто: x|y

Соответствует либо x или же y,

Например: /green|red/ Матчи green в green apple а также red в red apple.

Смотрите регулярное выражение на MDN

Написание многострочного с отступом помогает:

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

Ваше второе предположение верно. | имеет более низкий приоритет, чем конкатенация (т.е. написание выражений после друг друга).

Это [^#<]*(<[\w\W]+>)[^>]*$ или же #([\w\-]*)$и оба в не захватывающей группе.

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

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

/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/
Другие вопросы по тегам