Какой механизм регулярных выражений использует Azure Verizon? - PullRequest
0 голосов
/ 12 декабря 2018

Я создал Azure CDN с конечной точкой по подписке Verizon Premium.Затем я вошел на платформу Azure Verizon, чтобы добавить новое правило в движок.Если в конце URL-адреса нет расширения, HTML-файл добавляется автоматически.В Azure Verizon это выглядит так: enter image description here Однако, если вы замените .+\/[^\.]\w+$ на ^.*/[^/.]+$, он не будет работать так же, не знаю, почему и не появляются ошибки проверки.После того, как я прочитал эту статью , я подозреваю, что есть что-то, связанное со вкусом регулярного выражения, но я совсем не уверен.

1 Ответ

0 голосов
/ 13 декабря 2018

Если вы не уверены в используемом механизме регулярных выражений, попробуйте использовать только самые распространенные конструкции регулярных выражений, такие как ., *, [...].Поэтому вместо \w попробуйте [a-zA-Z0-9_].

Не избегайте ничего внутри [...], имейте в виду, что для этого вам необходимо поставить ] сразу после начального [ (не во вкусе ECMAScript, вам нужно будет экранировать ] внутрикласс символов), - может быть помещен в конец класса символов без экранирования, ^ не должно быть в начале.Обратите внимание, что \ может быть экранирован только в регулярных выражениях NFA, в основанных на POSIX, внутри выражений в скобках, \ анализируется как литерал \ char, так как выражения в скобках POSIX не поддерживают экранирование регулярных выражений внутри них.Не имеет смысла экранировать . внутри [...], [\.] является недопустимым шаблоном в регулярном выражении JS ES6 при компиляции с модификатором u.Поэтому безопаснее писать [^.].

Разделители регулярных выражений используются только в некоторых языках программирования для определения регулярных выражений, но в программном обеспечении, подобном этому, вы имеете дело только со строковыми шаблонами.Таким образом, / не является чем-то особенным и не требует экранирования.

Итак, я бы использовал здесь следующее регулярное выражение:

.+/[^.][0-9a-zA-Z_]+$
...