Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 26.03.2013, 17:16
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от rgl Посмотреть сообщение
Споткнется (не заметит закрывающую кавычку) если перед ней стоит замаскированный обратный слэш, напр.
var s = "abcd\\";
Добавлю проверку, пасиб за замечание.

(["'])(?:\1|.*?(?:[\\]{2}|[^\\])\1)
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 26.03.2013 в 18:13.
Ответить с цитированием
  #22 (permalink)  
Старый 26.03.2013, 17:40
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

kobezzza,
Сообщение от kobezzza
(["'])(?:\1|.*(?:[\\]{2}|[^\\])\1)
a='aaa';b='bbb';
Мой вариант:
(["'])(?:\\.|(?:(?!\1).)*\1)
Ответить с цитированием
  #23 (permalink)  
Старый 26.03.2013, 17:52
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от rgl Посмотреть сообщение
kobezzza,

a='aaa';b='bbb';
Мой вариант:
(["'])(?:\\.|(?:(?!\1).)*\1)
Забыл жадность убрать, теперь не спотыкается (обновил выше). Чёт ты перемудрил по-моему

var a = '\a':
у тебя упадёт, из-за странной проверки \\.
var a= 'sdsd\'
также упадёт
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 26.03.2013 в 18:11.
Ответить с цитированием
  #24 (permalink)  
Старый 26.03.2013, 18:13
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Не, ну как только я начинаю проверять регэкспы, рискую нарваться :-)
a='aaa\\\'a';b='bbb';

Сообщение от kobezzza
Забыл жадность убрать, теперь не спотыкается (обновил выше).
Сообщение от kobezzza
(["'])(?:\1|.*?(?:[\\]{2}|[^\\])\1)
А я не перемудрил, а недомудрил, вот как надо:
(["'])(?:\\.|(?:(?:(?!\1).)))*\1
Ответить с цитированием
  #25 (permalink)  
Старый 26.03.2013, 18:19
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Сообщение от kobezzza
у тебя упадёт, из-за странной проверки \\.
Мой первоначальный вариант не работает из-за того, что \1 который должен матчить закрывающую кавычку, находится в скобках, и не применим к первой части | , кроме того, звездочка на левую часть | не действует.
А насчет var a= 'sdsd\' так я предполагаю, что JS-ных ошибок нет, т.е. все кавычки в строке закрываются

Последний раз редактировалось rgl, 26.03.2013 в 18:31.
Ответить с цитированием
  #26 (permalink)  
Старый 26.03.2013, 18:36
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

var a= '\\\'

UPD:
не прочитал, что ты не учитываешь этот фактор, тада всё ок.
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 26.03.2013 в 18:41.
Ответить с цитированием
  #27 (permalink)  
Старый 26.03.2013, 18:50
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Сообщение от kobezzza
var a= '\\\'
Ну так твое тоже ошибается.
Раз уж устроили тут такое соревнование-блиц, нужно договориться о правилах, напр, допустимы ли непарные кавычки в строчке. Я изначально считал, что применяться регэксп будет к JavaScript коду, в котором нет ошибок (так тема начиналась), а значит кавычки должны обязательно закрываться.
Ответить с цитированием
  #28 (permalink)  
Старый 26.03.2013, 18:52
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Сообщение от rgl Посмотреть сообщение
Ну так твое тоже ошибается.
Раз уж устроили тут такое соревнование-блиц, нужно договориться о правилах, напр, допустимы ли непарные кавычки в строчке. Я изначально считал, что применяться регэксп будет к JavaScript коду, в котором нет ошибок (так тема начиналась), а значит кавычки должны обязательно закрываться.
Да ладно, какие соревнования) Мой тоже падает, думаю, как сделать чтобы не падал
__________________
kobezzza
code monkey
Ответить с цитированием
  #29 (permalink)  
Старый 26.03.2013, 18:56
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Вот при корректном JavaScript кода мой работает правильно, а твой ошибается:
var a= 'a\\\'a';
Ответить с цитированием
  #30 (permalink)  
Старый 26.03.2013, 19:00
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Сообщение от kobezzza
думаю, как сделать чтобы не падал
Наверно, так:
/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*')/

но тут одинарная и двойная кавычки каждая сама по себе, а тебе хочется чтобы вместе.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пжлста, найти (или написать) скрипт для смены картинок. Artweb Работа 9 25.02.2011 11:28
dragSelector для iframe помогите написать Golizart ExtJS 0 25.07.2010 15:35
Помогите написать скрипт для корзины Deep Элементы интерфейса 1 19.06.2010 14:46
Помогите со скриптом для onClick! Alex13 Общие вопросы Javascript 1 04.11.2009 10:36