Помогите с регуляркой как 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, время: 01:32. |