Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.08.2019, 15:01
Интересующийся
Отправить личное сообщение для varjaginm Посмотреть профиль Найти все сообщения от varjaginm
 
Регистрация: 12.10.2018
Сообщений: 22

Помогите с регуляркой как 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 ?
Ответить с цитированием
  #2 (permalink)  
Старый 22.08.2019, 15:07
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от varjaginm
Можно ли заставить 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));
Ответить с цитированием
  #3 (permalink)  
Старый 22.08.2019, 15:24
Интересующийся
Отправить личное сообщение для varjaginm Посмотреть профиль Найти все сообщения от varjaginm
 
Регистрация: 12.10.2018
Сообщений: 22

Работает!
Но ситуация другая: регулярки приходят извне, являются по-сути параметрами, а вот такие вырианты не идут:

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 !
Ответить с цитированием
  #4 (permalink)  
Старый 22.08.2019, 15:30
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от varjaginm
var patt = new RegExp("^(\d{3}|\d{5})&");
Нужно экранировать "\"
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));
Ответить с цитированием
  #5 (permalink)  
Старый 22.08.2019, 15:38
Интересующийся
Отправить личное сообщение для varjaginm Посмотреть профиль Найти все сообщения от varjaginm
 
Регистрация: 12.10.2018
Сообщений: 22

Спасибо ! Про экранирование упустил да и амперсанд вместо доллара (((
Помогло !
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожайлуста! Как с цифры сделать строку Rozer jQuery 6 28.02.2018 19:45
Помогите пожалуйста, я туп как дуб в отношении масивов! :help: Миридия Общие вопросы Javascript 0 09.03.2017 00:15
Ребят помогите, не знаю как написать скрипт с проверкой файлов на присутствие sergera0 Ваши сайты и скрипты 1 16.07.2016 13:35
Не знаю как сделать помогите! romikz Элементы интерфейса 2 18.08.2013 14:15
Люди помогите! Как отключить css для ОПЕРЫ МИНИ??? griha787 Элементы интерфейса 1 13.04.2011 20:10