【问题标题】:Why doesn't this regex reject trailing slashes (using negative lookahead)?为什么这个正则表达式不拒绝尾随斜杠(使用负前瞻)?
【发布时间】:2011-05-20 12:52:31
【问题描述】:

我正在使用以下正则表达式 (PCRE) 来(非常基本地)验证以 http[s]:// 开头的 URL 并拒绝尾部斜杠:^https?://.+(?!/)$

但是,负前瞻不会阻止正则表达式匹配带有斜杠的 url。

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

【问题讨论】:

  • 就像 Jens 说的:如果你已经在字符串的末尾,那么后面就没有/了。

标签: regex pcre


【解决方案1】:

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

你可以使用

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

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

【讨论】:

  • 谢谢 - 我选择了后一种解决方案,因为这个解决方案看起来更干净。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 2011-10-14
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多