Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.07.2010, 10:32
Новичок на форуме
Отправить личное сообщение для palesika2002 Посмотреть профиль Найти все сообщения от palesika2002
 
Регистрация: 09.07.2010
Сообщений: 6

Проблема с регулярным выражением
Надо вытащить из строки все что находится в двойных кавычках("). На php получается - '!\"(.*?)\"!si'. Не могу написать регулярное на javascript. Кто знает помогите.
Ответить с цитированием
  #2 (permalink)  
Старый 09.07.2010, 10:47
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

var a = '"tra-ta-ta"'
var result = a.match(/"([^"]*)"/)
alert(result[1])
Ответить с цитированием
  #3 (permalink)  
Старый 09.07.2010, 10:55
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

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

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

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

alert(string);


g - найти все соответствия
__________________
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
Самые главные в жизни вещи - не вещи! (было написано на одном гараже =)
Ответить с цитированием
  #4 (permalink)  
Старый 09.07.2010, 11:02
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

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

/".+?"/g
Ответить с цитированием
  #5 (permalink)  
Старый 09.07.2010, 12:29
Новичок на форуме
Отправить личное сообщение для palesika2002 Посмотреть профиль Найти все сообщения от palesika2002
 
Регистрация: 09.07.2010
Сообщений: 6

Большое спасибо. Помогло. Все таки регулярные выражения немного отличаются на разных языках
Ответить с цитированием
  #6 (permalink)  
Старый 09.07.2010, 21:47
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

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

/".+?"/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, '*'))


Ну, и возможно не +, а *, поскольку рядом стоящие кавычки тоже вполне себе слово.
Ответить с цитированием
  #7 (permalink)  
Старый 10.07.2010, 06:49
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от e1f
Ленивый квантификатор работать не будет
ну, сам-то он работает, просто то, что перед ним не работает.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с Popup окном vovuslik jQuery 5 12.06.2010 16:12
Проблема извлечения подстрок регулярным выражением Dotod Общие вопросы Javascript 4 17.05.2010 05:31
Извлечь значение параметра из location.search регулярным выражением? Бобр Общие вопросы Javascript 8 26.01.2010 01:01
Отлов круглых скобок регулярным выражением Kuzya59 Общие вопросы Javascript 2 25.12.2009 13:05
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47