Помогите разобраться с регуляркой
Уже мозг кипит, не понимаю, что не так. Помогите разобраться пожалуйста.
вот к примеру такой код работает, шаблон подходит
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,
(?:\d|\+|-)
// =>
[+\d-] /* или */ [\d+-]
// =>
new RegExp("[+\\d-]"); // ещё косая черта перед косой чертой.
alert( true === new RegExp("^[+\\d-]{0,3}$").test(-56) === new RegExp("^[+\\d-]{0,3}$").test(+56) );
|
Интересно, у меня второй пример топикстартера выдаёт 'OK', я не понимаю, в чём проблема.
|
Ну вообще, насчёт экранирования вот здесь прочитал...
а маска должна быть типа ###.99 или 999.9 где # это либо число, либо знак + либо знак - либо ничего 9 это число, либо ничего количество решёток или девяток в маске может быть и другим. Я делал пока просто для ### где кол-во решёток 3 |
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 10:01. |