Почему это:
/^lol(?=abc)(?=dfg)$/
не может сравниться с этим
lolabcdfg
Спасибо за ваш ответ! Это было очень мило с вашей стороны!
Потому что только утверждающие, они не потребляют символы … так что в основном вы говорите,
матч лол:
lol
тогда посмотрите голову на abc:
lol(abc) // matches
теперь смотрим вперед для dfg
lol(dfg) // does not match
Вот почему это не работает. Вам нужно использовать символы, если вы хотите проверить как abc, так и abcdfg. Если вы хотите только смотреть в будущее, вы можете сделать:
/^lol(?=abc|dfg|abcdfg)/
Это будет соответствовать строки
Однако это не очень полезно. Следующее было бы более уместным
/^lol(abc)?(dfg)?/
Что будет соответствовать LOL, необязательно ABC, а затем необязательно DFG.
Это регулярное выражение сделает
/^lol(abc)?(dfg)?$/
Я всегда использую https://regex101.com/ проверить мое регулярное выражение в Интернете