Regex PHP: смотреть в будущее дважды

Почему это:

/^lol(?=abc)(?=dfg)$/

не может сравниться с этим

lolabcdfg

Спасибо за ваш ответ! Это было очень мило с вашей стороны!

1

Решение

Потому что только утверждающие, они не потребляют символы … так что в основном вы говорите,

матч лол:

lol

тогда посмотрите голову на abc:

lol(abc) // matches

теперь смотрим вперед для dfg

lol(dfg) // does not match

Вот почему это не работает. Вам нужно использовать символы, если вы хотите проверить как abc, так и abcdfg. Если вы хотите только смотреть в будущее, вы можете сделать:

/^lol(?=abc|dfg|abcdfg)/

Это будет соответствовать строки

  • lolabc
  • loldfg
  • lolabcdfg

Однако это не очень полезно. Следующее было бы более уместным

/^lol(abc)?(dfg)?/

Что будет соответствовать LOL, необязательно ABC, а затем необязательно DFG.

4

Другие решения

Это регулярное выражение сделает

/^lol(abc)?(dfg)?$/

Я всегда использую https://regex101.com/ проверить мое регулярное выражение в Интернете

1

По вопросам рекламы [email protected]