正则表达式匹配

时间:2016-03-03 10:58:01

标签: regex

我试图编写一个匹配网址的正则表达式,只有在'/'之后才有点。

这是我迄今为止所得到的: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

问题是我需要匹配完整的网址,因为你可以从单词" facebook"开始。

我尝试了不同的选择,但没有一个适合我。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我的建议是

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

请参阅regex demo\n已添加到否定字符类[^\/],以便仅匹配单独行中的网址,如果您测试单个字符串,则{{1没有必要。)

此正则表达式匹配:

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

所以,一个更好的选择:

\S*