正则表达式,不匹配网址

发布于 2024-10-24 04:29:27 字数 114 浏览 3 评论 0原文

我必须匹配超过 30 个字符的单词,但这些单词不能是 url。

我尝试这样做,但效果不佳:

(?]{30})

I have to match words longer than 30 characters, but these words can't be urls.

I tried to do this, but doesn't work fine:

(?<!ftp)([^\s\t\r\n<>]{30})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

仅一夜美梦 2024-10-31 04:29:27

我有几点:

  • 您的正则表达式可以匹配 ftp://example.com ,因为您使用的是后向查找,它在第一个 f 之前看不到任何内容。请改用前瞻。
  • 此外,您还需要确保匹配整个单词,否则您可能会部分匹配 URL。
  • \s 包括 \t、\n 等...所以后者是多余的。
  • 超过 30 个字符表示 31 个或更多字符,即 {31,}

试试这个:

(?<![^\s<>])(?!ftp)([^\s<>]{31,})(?![^\s<>])

I have a few points:

  • Your regular expression can match ftp://example.com because you are using a lookbehind, which sees nothing before the first f. Use a lookahead instead.
  • Also you need to ensure that you match entire words, otherwise you can matching part way into a URL.
  • \s includes \t, \n, etc... so the latter is redundant.
  • Longer than 30 characters means 31 or more characters, i.e. {31,}.

Try this instead:

(?<![^\s<>])(?!ftp)([^\s<>]{31,})(?![^\s<>])
人间☆小暴躁 2024-10-31 04:29:27

试试这个:

\b(?<!ftp://)\w{30,}\b

Try this:

\b(?<!ftp://)\w{30,}\b
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文