Различие между "[^"]*" и ".*?"
Регулярные выражения "[^"]*"
и ".*?"
– при выполнении одинаковы?
Иначе говоря, существует ли такая строка, на которой они дадут разные результаты? Если да – дайте такую строку.
Они очень похожи и, да, почти одинаковы. Оба ищут от одной кавычки до другой.
Различие здесь в символе точка '.'
. Как мы помним, точка '.'
обозначает любой символ, кроме перевода строки.
А [^"]
– это *любой символ, кроме кавычки '"'
.
Получается, что первый регэксп "[^"]*"
найдёт закавыченные строки с \n
внутри, а второй регэксп ".*?"
– нет.
Вот пример:
alert( '"многострочный \n текст"'.match(/"[^"]*"/) ); // найдёт
alert( '"многострочный \n текст"'.match(/".*?"/) ); // null (нет совпадений)