Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите экранировать регулярку 
:(
    Опции темы
shtormIK
Дата 26.6.2012, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 3.8.2009

Репутация: нет
Всего: нет



Уже мозг кипит, не понимаю, что не так. Помогите разобраться пожалуйста.
вот к примеру такой код работает, шаблон подходит.
Код

rmask1 = /^(?:\d|\+|-){0,3}$/;
if (rmask1.test(-56)){alert('OK');}
else{alert(rmask1)}

Но мне нужно вставить в него переменную, значит надо задавать паттерн в другом виде... экранируем всё и вся
Код

rmask1 = new RegExp('\^\(\?:\\d\|\\\+\|-\){0,3}\$');
if (rmask1.test(-56)){alert('OK');}
else{alert(rmask1)}


... шаблон не подходит ... что-то не так.

Это сообщение отредактировал(а) shtormIK - 26.6.2012, 12:06
PM MAIL   Вверх
baldina
Дата 26.6.2012, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 0
Всего: 101



Код

rmask1 = new RegExp('^(?:\\d|\\+|-){0,3}$');


Это сообщение отредактировал(а) baldina - 26.6.2012, 12:55
PM MAIL   Вверх
shtormIK
Дата 26.6.2012, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 3.8.2009

Репутация: нет
Всего: нет



baldina,  не... ругается javascript invalid quantifier
И экранировать вроде бы как все спецсимволы надо ?
Специальные символы
( ) — круглые скобки;
[ ] — квадратные скобки;
\ — обраный слеш;
. — точка;
^ — степень;
$ — знак доллара;
| — вертикальная черта;
? — вопросительный знак;
+ — плюс.
PM MAIL   Вверх
Evghenusi
Дата 26.6.2012, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 1
Всего: 15



shtormIK, что регулярка должна делать?

Цитата(shtormIK @  26.6.2012,  11:59 Найти цитируемый пост)
экранируем всё и вся
 не в обиду будет сказанно 
Цитата
Научи дурака молиться он и лоб расшибет

Код
var rmask1 = new RegExp('^(?:\\d|\\+|-){0,3}$');
 работает, хотя что должна проверять так и не понял

Добавлено через 1 минуту и 26 секунд
хм, baldina тоже самое предложил  smile , у меня тоже работает
PM WWW   Вверх
Aliance
Дата 26.6.2012, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



А чем рабочий вариант не устраивает?
PM MAIL WWW ICQ Skype   Вверх
Evghenusi
Дата 26.6.2012, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 1
Всего: 15



Цитата(Aliance @  26.6.2012,  14:54 Найти цитируемый пост)
А чем рабочий вариант не устраивает? 


Цитата(shtormIK @  26.6.2012,  11:59 Найти цитируемый пост)
Но мне нужно вставить в него переменную


PM WWW   Вверх
shtormIK
Дата 26.6.2012, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 3.8.2009

Репутация: нет
Всего: нет



Ну вообще, насчёт экранирования вот здесь прочитал...
 а маска должна быть типа ###.99 или 999.9
 где # это либо число, либо знак + либо знак - либо ничего
 9 это число, либо ничего
 количество решёток или девяток в маске может быть и другим. 
 Я делал пока просто для ### где кол-во решёток 3
PM MAIL   Вверх
Aliance
Дата 26.6.2012, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Evghenusi, вы сомневаетесь в моих способностях читать? Вопрос зачем? Ведь в приведённом примере по факту это не переменная, а константа. Если же регулярка задается, скажем, вводом пользователя/выборкой из БД или аналогичные варианты - тогда понятно, а иначе смысла не вижу делать через объект.
PM MAIL WWW ICQ Skype   Вверх
Evghenusi
Дата 26.6.2012, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


майский жук
**


Профиль
Группа: Участник
Сообщений: 506
Регистрация: 3.8.2006
Где: Молдова, Кишинёв

Репутация: 1
Всего: 15



Код

var rmask1 = new RegExp('^(-|\\+)?\\d+\\.\\d$');
shtormIK, сойдёт или я что-то упустил?


Цитата(Aliance @  26.6.2012,  17:01 Найти цитируемый пост)
сомневаетесь в моих способностях читать?
нисколько, я усомнился в вашей внимательности, вы же не электронное устройство, будь вы им, я бы не усомнился  smile .

Цитата(Aliance @  26.6.2012,  17:01 Найти цитируемый пост)
Ведь в приведённом примере по факту это не переменная, а константа.
если это относится ко мне, то к несчатью я не вижу там ни переменных, ни констант, видимо сказываются пробелы в моих знаниях.

Я вначале думал переменная будет вписываться в регулярку, например: new RegExp('^'+var+'$');
но ...
PM WWW   Вверх
shtormIK
Дата 27.6.2012, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 3.8.2009

Репутация: нет
Всего: нет



Evghenusi
ну я как сделать хотел ... разбивал маску типа ###.99 на 2 части - до точки и после, проверял в левой решётка или девятка (в правой всегда 9) и считал длину обеих частей.
Потом строил шаблон через регулярку. А переменная нужна чтоб ограничить именно кол-во симоволо в левой или правой части от точки
Вы правильно думали насчёт переменной
что-то типа такого должно было получится:

Код

var rmask1 = new RegExp('^(-|\\+)?\\d+{0,'+leftlength+'}\\.\\d{0,'+rightlength+'}$');


PM MAIL   Вверх
shtormIK
Дата 27.6.2012, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 3.8.2009

Репутация: нет
Всего: нет



До меня наверное дошло, почему у меня фаербаг выдаёт ошибку invalid quantifier...
забыл упомянуть одну деталь ... проект делаю в RADPHP XE2, будь он неладен ... он весь код перекомпилирует, преобразует. Из-за этого видимо и проблема

Это сообщение отредактировал(а) shtormIK - 27.6.2012, 12:01
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1085 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.