regex - 为什么这个正则表达式不拒绝尾部斜杠(使用负前瞻)?

标签 regex pcre

我正在使用以下正则表达式 (PCRE) 来(非常基本地)验证以 http[s]://开头的 URL 并拒绝尾部斜杠:^https?://.+(?!/)$
但是,否定前瞻并不能阻止正则表达式将 url 与尾部斜杠匹配。

我知道我可以简单地使用 ^https?://.*[^/]$但我想知道为什么前瞻不起作用。

最佳答案

前瞻检查字符串的最后一个字符(行尾之前的字符)是否后跟斜杠。不是,因为后面没有任何字符,所以 (?!/)永远不会阻止比赛。

你可以用

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

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

关于regex - 为什么这个正则表达式不拒绝尾部斜杠(使用负前瞻)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6072139/

相关文章:

regex - 仅当同一行后面包含字母时,正则表达式才匹配以数字开头的行

正则表达式 - 除了括号内的任何内容之外的所有内容

javascript - Angularjs 正则表达式验证

javascript - 如果表情符号是国旗,则使用正则表达式进行检测

javascript - 带 url 的正则表达式

php - PCRE 能否测试主题中任何位置(字符类)出现的总数?

javascript - "\/"在 javascript 正则表达式中有效吗?

php - 将 bool 搜索字符串拆分为其组成部分/计算导致 SQL SELECT 匹配的原因

php - 将 Javascript 正则表达式转换为 PHP (PCRE) 表达式

regex - 这个递归正则表达式究竟是如何工作的?