【问题标题】:regex url matching正则表达式 url 匹配
【发布时间】:2016-03-03 10:58:01
【问题描述】:

我正在尝试编写一个匹配 url 的正则表达式,前提是 '/' 之后有一个点。

这是我目前所得到的:http://regexr.com/3cu85

我的正则表达式如下:/facebook.com\/.*[.]/gm 我正在使用这个 URls 进行测试:

facebook.com
facebook.com/
facebook.com/test.user 

www.facebook.com
www.facebook.com/
www.facebook.com/test.user

https://www.facebook.com
https://www.facebook.com/
https://www.facebook.com/test.user

问题是我需要匹配完整的 url,并且可以从单词“facebook”开始。

我尝试了不同的选项,但没有一个对我有用。

感谢您的帮助

【问题讨论】:

  • 什么应该匹配,什么不应该匹配?提供样品。
  • 基本上,所有单词 facebook.com 后跟 /{any}.{any} 以匹配用户的网址
  • 太棒了! @WiktorStribiżew 完全符合我的需要。非常感谢
  • 如果 anubhava 的正则表达式(我会写成/\S*\bfacebook\.com\/[^\s.]+\.\S*/)对你有用,我不会发布我的答案。

标签: regex


【解决方案1】:

我的建议是

(https?:\/\/)?(w{3}\.)?facebook\.com\/[^\/]*\..*

查看regex demo\n 被添加到否定字符类[^\/] 以便仅匹配单独行中的 URL,如果您测试单个字符串,则不需要 \n。)

此正则表达式匹配:

  • (https?:\/\/)? - http://https:// 的可选(一个或零个)出现
  • (w{3}\.)? - www 的可选(一次或零次)出现
  • facebook\.com - 文字序列facebook.com
  • \/ - 文字 /
  • [^\/]* - 除/ 之外的零个或多个字符(更好:使用[^\/.]* 匹配除./ 之外的任何字符以避免冗余回溯)
  • \. - 文字 .
  • .* - 除换行符外的任何 0+ 个字符(更好:由于 URL 不能有空格(通常),您可以将其替换为 \S* 匹配零个或多个非空白字符)。

所以,一个更好的选择:

(https?:\/\/)?(w{3}\.)?\bfacebook\.com\/[^\/.]*\.\S*

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 2015-09-14
  • 2021-12-31
  • 2016-12-12
  • 2012-02-04
相关资源
最近更新 更多