Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с регулярным выражением (https://javascript.ru/forum/misc/10552-problema-s-regulyarnym-vyrazheniem.html)

palesika2002 09.07.2010 10:32

Проблема с регулярным выражением
 
Надо вытащить из строки все что находится в двойных кавычках("). На php получается - '!\"(.*?)\"!si'. Не могу написать регулярное на javascript. Кто знает помогите.

Sweet 09.07.2010 10:47

var a = '"tra-ta-ta"'
var result = a.match(/"([^"]*)"/)
alert(result[1])

Tim 09.07.2010 10:55

var string = 'jhweifj"abc"ioweuf\nweuf"123"idcqwuw8wu8';

var regexp = /"[^"]+"/g;

string = string.replace(regexp, "---");

alert(string);


g - найти все соответствия

exec 09.07.2010 11:02

Цитата:

/"[^"]+"/g
Почему бы просто не использовать "ленивый" квантификатор?

/".+?"/g

palesika2002 09.07.2010 12:29

Большое спасибо. Помогло. Все таки регулярные выражения немного отличаются на разных языках

e1f 09.07.2010 21:47

Цитата:

Сообщение от exec (Сообщение 62920)
Почему бы просто не использовать "ленивый" квантификатор?

/".+?"/g

Ленивый квантификатор работать не будет:
alert('jhweifj"abc""ioweuf\nweuf""123"idcqwuw8wu8'.replace(/".+?"/g, '*'))


Сравните с
alert('jhweifj"abc""ioweuf\nweuf""123"idcqwuw8wu8'.replace(/"[^"]+"/g, '*'))


Чтобы работало с lazy, надо так:
alert('jhweifj"abc""ioweuf\nweuf""123"idcqwuw8wu8'.replace(/"[\s\S]+?"/g, '*'))


Ну, и возможно не +, а *, поскольку рядом стоящие кавычки тоже вполне себе слово.

Riim 10.07.2010 06:49

Цитата:

Сообщение от e1f
Ленивый квантификатор работать не будет

ну, сам-то он работает, просто то, что перед ним не работает.


Часовой пояс GMT +3, время: 23:06.