#javascript #regex #ruby
#javascript #регулярное выражение #ruby
Вопрос:
Я фильтрую URL-адрес запроса, в котором мне нужно указать логическое значение для проверки регулярных выражений. Я не знаю, возможно ли создать такое регулярное выражение, или мне нужно изменить URL-адреса, чтобы следовать шаблонам,
Я запутался, потому что мне нужно совпадение для двух, таких как /cart/{orgSlug}/{cartNameSlug}
amp; /cart/{id}
где slug name
должен быть хотя бы один символ и id
должен быть только числовым.
Я забочусь о получении правильного URL-адреса путем разделения по ?
и проверки метода запроса в качестве предварительного теста.
Комментарии:
1. для
/cart/{id}
я получилcart/[0-9]{1,5}
Ответ №1:
Для /cart/{orgSlug}/{cartNameSlug}
вы можете использовать:
/^/cart/[^/]*[a-z][^/]*/[^/]*[a-z][^/]*/?$/i
Демонстрация регулярных выражений
Для /cart/{id}
вы можете использовать:
/^/cart/d /?$/i
Комментарии:
1. просто невероятно 🙂 Я удалил
/
только в конце.2. Вы почти всегда хотите
A
иz
вместо^
и$
(соответственно) в Ruby.3. @anubhava что я могу сделать, если я хочу избежать того, чтобы имя slug не начиналось с числа?
4. @ray: Просто добавьте
(?1d)
сразу после сопоставления/
, чтобы сделать это:^/cart/(?!d)[^/]*[a-z][^/]*/(?!d)[^/]*[a-z][^/]*$