2013-10-07 2 views
4

Я хочу написать regexp, который позволяет использовать некоторые специальные символы, такие как #-., и он должен содержать хотя бы одну букву. Я хочу понять, ниже вещи также:Что означает? =^Означает в регулярном выражении?

/(?=^[A-Z0-9. '-]{1,45}$)/i 

В этом регулярном выражении, что является смыслом ?=^? Что такое подвыражение в регулярном выражении?

+3

То, что вы хотите найти, - это lookahead '(? ='. См. Https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions –

ответ

6

?= является положительным опережением

Read more on regex

+0

Я не имею в виду nitpick , но это будет выглядеть только при использовании в круглых скобках: '(? =)'. –

+0

@MariusSchulz Да, вы правы. Это касается вопроса, заданного относительно * значения «? = ^», * - Я должен был также обратиться к '^', но, если бы ОП прочитал больше из документации, это не повредит – vol7ron

8

(?=) является опережением, это вперед в строке ищет, чтобы увидеть, если он соответствует фактически не захватывая его

^ означает, что он соответствует в начале вход (например, со строкой a test, ^test не соответствует, так как он не начинается с «теста», хотя он содержит его)

В целом, ваше выражение говорит о том, что оно должно быть ^ start и $ end с 1-45 {1,45} элементами, которые существуют в вашей группе персонажей [A-Z0-9. '-] (без учета регистра /i). Дело в том, что в этом случае это просто означает, что он не собирается ничего записывать (совпадение нулевой длины).

Смежные вопросы