Почему это регулярное выражение не отклоняет завершающие косые черты (используя отрицательный прогноз)? - PullRequest
4 голосов
/ 20 мая 2011

Я использую следующее регулярное выражение (PCRE) для (в основном) проверки URL-адреса, начинающегося с http [s]: // и отклонения завершающих слешей: ^https?://.+(?!/)$

Тем не менее, отрицательное предпросмотр не мешает регулярному выражению сопоставлять URL с косой чертой.

Я знаю, что могу просто использовать ^https?://.*[^/]$, но я хотел бы знать, почему заглядывание не работает.

1 Ответ

6 голосов
/ 20 мая 2011

Ваш lookahead проверяет, следует ли за последним символом строки (перед символом конца строки) косая черта. Это не так, поскольку ни один символ не следует за ним, поэтому (?!/) никогда не помешает совпадению.

Вы можете использовать

^https?://.*(?!/).$

или

^https?://.+(?<!/)$
...