Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите разобраться с регуляркой (https://javascript.ru/forum/misc/29400-pomogite-razobratsya-s-regulyarkojj.html)

shtormIK 26.06.2012 15:27

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

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)}


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

9xakep 26.06.2012 15:35

Что он должен найти? Какой текст?

melky 26.06.2012 15:47

shtormIK,
(?:\d|\+|-)
// =>
[+\d-] /* или */ [\d+-]
// =>
new RegExp("[+\\d-]"); // ещё косая черта перед косой чертой.

alert( true === new RegExp("^[+\\d-]{0,3}$").test(-56) === new RegExp("^[+\\d-]{0,3}$").test(+56)  );

oneguy 26.06.2012 15:59

Интересно, у меня второй пример топикстартера выдаёт 'OK', я не понимаю, в чём проблема.

shtormIK 26.06.2012 16:37

Ну вообще, насчёт экранирования вот здесь прочитал...
а маска должна быть типа ###.99 или 999.9
где # это либо число, либо знак + либо знак - либо ничего
9 это число, либо ничего
количество решёток или девяток в маске может быть и другим.
Я делал пока просто для ### где кол-во решёток 3

shtormIK 26.06.2012 16:43

Цитата:

Сообщение от oneguy (Сообщение 184257)
Интересно, у меня второй пример топикстартера выдаёт 'OK', я не понимаю, в чём проблема.

у меня выскакивает в алерте 2 вариант...

oneguy 26.06.2012 20:02

Цитата:

Сообщение от shtormIK (Сообщение 184275)
у меня выскакивает в алерте 2 вариант...

Каким браузером вы пользуетесь?


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