Помогите разобраться с регуляркой
Уже мозг кипит, не понимаю, что не так. Помогите разобраться пожалуйста.
вот к примеру такой код работает, шаблон подходит 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, время: 08:54. |