Сопоставление регулярных выражений URL для динамических параметров

#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][^/]*$