Помогите с регуляркой как PCRE
В приложениях использую библ PCRE, и привык, что при выражении
[0-9]{3}|[0-9]{5} будут следующие результаты: 123 // true 1234 // false 12345 // true 123456 //false т.е. ЛИБО 3, ЛИБО 5 цифр и никак иначе ! Проверяю это на JS - Фиг! var str = "1234"; var patt = new RegExp("[0-9]{3}|[0-9]{5}"); var res = patt.test(str); document.getElementById("demo").innerHTML = res; дает true, т.е. "Я нашел одно указанное выражение" Можно ли заставить JS проверять как PCRE ? |
Цитата:
var re=/^(\d{3}|\d{5})$/;
alert(re.test(12));
alert(re.test(123));
alert(re.test(1234));
alert(re.test(12345));
alert(re.test(123456));
|
Работает!
Но ситуация другая: регулярки приходят извне, являются по-сути параметрами, а вот такие вырианты не идут: var patt = "(\d{3}|\d{5})"; // получаем как-то var re=/^patt$/; alert(re.test("12")); alert(re.test("123")); alert(re.test("1234")); alert(re.test("12345")); alert(re.test("123456")); везде false ! Или я не так подключаю patt ? А с regExp ( как мне бы хотелось) var str = "123"; var patt = new RegExp("^(\d{3}|\d{5})&"); var res = patt.test(str); false ! |
Цитата:
var re=new RegExp('^(\\d{3}|\\d{5})$');
alert(re.test(12));
alert(re.test(123));
alert(re.test(1234));
alert(re.test(12345));
alert(re.test(123456));
|
Спасибо ! Про экранирование упустил да и амперсанд вместо доллара (((
Помогло ! |
| Часовой пояс GMT +3, время: 17:10. |