我正在尝试在一组文本中识别网址。但是,我希望能够找到松散形成的网址,例如:
example.com
www.example.com
我不是很擅长正则表达式:(
我发现了下面的模式,但不幸的是它需要这个方案。
/(([[:alnum:]]+:\/\/)|www\.)([^[:space:]]*)([[:alnum:]#?\/&=])/i
是否可以匹配包含.com或.net或.org等的整个字符串(无空格)?
由于
答案 0 :(得分:0)
存在误报的风险,但很少。所以你确实可以使用类似的东西:
/\b(([-\w]{2,}\.)+(com|net|org|info)|www(\.\w{3,})+\.\w{2,6})\b/i
上半部分用于普通的.com / .net域名,第二部分用www匹配所有内容。字首。如果您想要将这些域名另外检测到完整的http:// urls,则会更加困难。
答案 1 :(得分:0)
~(?:https?://)?(?:[-\w]+\.)+[a-z]{2,6}[^\s]*~
答案 2 :(得分:0)
仅匹配任何不包含空格且以“.com”,“。net”或“.org”结尾的字符串:
/[^\s]+\.(?:com|net|org)\b/i
说明:
/
=开始使用正则表达式[^\s]
=不是(^
)一个空格(\s
)字符+
=前面一组中的一个或多个(非空白字符)\.
=一个点。 RegExps中的点是特殊字符,否则(?: ... )
=一个群组,但不是一个要存储的群组com|net|org
= com
或net
或org
(您可以在这里添加更多内容,以“|”分隔)\b
=单词边界 - 单词的结尾/
=正则表达式的结尾(除了可选标记)i
=对案例不敏感答复的延伸
根据OP的请求,下面是一个(粗略)RegExp,它应匹配以指定字符串结尾的域的URL,以及查询字符串中的一个或多个key = value对。
/[^\s]+\.(?:com|net|org)[^\s]+\?[^\s]+=[^\s]+(?:\&?[^\s]+=[^\s]+)*\b/i
/
=开始使用正则表达式[^\s]+\.(?:com|net|org)
=和以前一样[^\?]+
=一个或多个非问号字符(这可能是任何文件夹或文件名)。同样,问号标记前面有一个\
,它被视为普通字符,否则,它具有特殊含义\?
=问号[^\s]+\=[^\s]+
=一个或多个非空格,然后是等号,然后是一个或多个非空格(?:\&?[^\s]+=[^\s]+)*
=没有或多组&符号&
,然后是另一个或多个非空格,等号和一个或多个非空格\b
=字符串结尾/
=正则表达式结束i
=对案例不敏感注意:这不会查找完全有效的网址,也不会包含大量国家/地区代码(例如澳大利亚的“.com.au”)或其他顶级域名(例如'.edu'等。)但是,它将匹配 twitter.com/example?var=true
提供的示例字符串