Обновленный ответ - Assertion
В этом случае лучший способ сделать это состоит в использовании утверждения, состоящим из проверки только позиции ожидается в соответствии с характером в вопросе.
Я знаю, что это просто, но с использованием Outter псевдо-якорный текст \[ ... \]
как
разделителем, который не может существовать в организме является редкостью.
Вы всегда должны стараться избегать этого.
Вещи меняются, ваш вход может измениться.
правило следовать в проверке известных персонажей, которые являются Mid-струнной является использование только их
при использовании утверждения валидатора.
Это избавляет от необходимости полагаться на то, что не существует на данный момент т.е. не ]
,
, но должны полагаться на то, что является там.
Опять же, это относится к mid-string Соответствие.
BOL/EOL - совсем другая вещь ^$
, и является более постоянной конструкцией
, с которой можно использовать рычаги.
Всегда лучше кодоваться умнее.
\[\s*\b(?=[0-9A-Za-z][0-9A-Za-z_.#]{0,199}-|[0-9A-Za-z][0-9A-Za-z_.#]{0,200}(?:\.[0-9*A-Za-z][0-9A-Za-z_.#]{0,200})*\.[0-9*A-Za-z][0-9A-Za-z_.#]{0,199}-)(?:[0-9A-Za-z][0-9A-Za-z_.#-]{0,200})(?:\.(?:[0-9*A-Za-z][0-9A-Za-z_.#-]{0,200}))*(\.?|\b)\s*\]
Использования Conditionals
Если ваш двигатель поддерживает условные, легкий путь, чтобы не полагаться на лапе
псевды якорный текст, то есть. [..]
.
\[\s*\b[0-9A-Za-z](?:[0-9A-Za-z_.#]|(-)){0,200}(?:\.(?:[0-9*A-Za-z](?:[0-9A-Za-z_.#]|(-)){0,200}))*(\.?|\b)\s*\](?(1)|(?(2)|(?!)))
Expanded
\[ \s* \b
[0-9A-Za-z]
(?:
[0-9A-Za-z_.#]
| (-) # (1)
){0,200}
(?:
\.
(?:
[0-9*A-Za-z]
(?:
[0-9A-Za-z_.#]
| (-) # (2)
){0,200}
)
)*
(\.? | \b) # (3)
\s* \]
(?(1) # Fail if no dash found
| (?(2)
| (?!)
)
)
ли '-' должен быть в определенном месте? – Trasiva
@Trasiva, нам просто нужно обеспечить присутствие. Он не зависит от местоположения. – kallada
Я всегда создаю свои регулярные запросы, тестируя их с помощью этого замечательного инструмента: http://regexr.com/. Вы можете видеть, работает ли ваш запрос в реальном времени при внесении изменений в него, делает работу с регулярным выражением a много проще :) – Kocik