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