Задать вопрос
AlexReal
@AlexReal
Супермен

Что я делаю не так в регулярке?

Подскажите, люди добрые, что я делаю не так?
/^https:\/\/([\w]+\.)?avito.ru\/[\w-]+\/.+(?!(_[\d]{4,}))$/.test(x)


Мне надо проверить чтобы линк авито не содержал на конце _ и число, состоящее из 4 и более цифр
То есть при проверке
https://www.avito.ru/moskva/odezhda_obuv_aksessuary/magazin_pizham_kigurumi_na_lubyanke_56545
должно возвращать false
а при проверке https://www.avito.ru/moskva/kvartiry/snimutrue
  • Вопрос задан
  • 166 просмотров
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
sergiks
@sergiks Куратор тега JavaScript
♬♬
Может, не нужно проверять всю строку? Если все линки правильные-авитные, то проверять только окончание строки – можно реверснуть строку .split('').reverse().join('') и проверять только начало /^\d{4,}_/

Вот одной регуляркой под ваше требование:
var re = new RegExp('^https?://(\\w+\\.)?avito\\.ru/([^/]+/)+([a-z_]+(?!_\\d{4,}))$');

var t1 = 'https://www.avito.ru/moskva/odezhda_obuv_aksessuary/magazin_pizham_kigurumi_na_lubyanke_56545';
var t2 = 'https://www.avito.ru/moskva/kvartiry/snimu';

re.test(t1) // false
re.test(t2) // true
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sergamers
@Sergamers
front-end
Попробуй сделать от противного.
^https:\/{2}(?:.*?\.)?avito\.ru[\/\w-]+(_\d{4,})$
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы