首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex和php匹配松散格式的urls?

问使用regex和php匹配松散格式的urls?
EN

Stack Overflow用户
提问于 2010-10-14 22:24:06
回答 3查看 213关注 0票数 1

我正在尝试在一组文本中识别urls。但是,我希望能够识别格式松散的urls,例如:

example.com

www.example.com

我不太擅长正则表达式:(

我在下面找到了patter,但不幸的是它需要方案。

代码语言:javascript
复制
/(([[:alnum:]]+:\/\/)|www\.)([^[:space:]]*)([[:alnum:]#?\/&=])/i

是否可以匹配包含.com、.net或.org等的整个字符串(没有空格)?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-14 22:55:07

要仅匹配不包含空格且以".com“、".net”或“.org”结尾的任何字符串:

代码语言:javascript
复制
/[^\s]+\.(?:com|net|org)\b/i

解释:

  • / =常规Expression
  • [^\s]的开始character
  • + =非(^)一个空格(\s) characters)
  • \. =一个或多个前面的集合(非空格Not =一个点。大小写中的点是特殊字符otherwise
  • (?: ... ) =A组,但不是stored
  • com|net|org = RegExps或net或org的特殊字符(您可以在此处添加更多字符,用"|")
  • \b =A单词边界分隔- word
  • /的结尾=正则表达式的结尾(可选的flags)
  • i =对大小写不敏感

除外

Answer的扩展

在OP的请求下,下面是一个(粗略的) RegExp,它应该匹配以指定字符串结尾的域的URL,并与查询字符串中的一个或多个key=value对相匹配。

代码语言:javascript
复制
/[^\s]+\.(?:com|net|org)[^\s]+\?[^\s]+=[^\s]+(?:\&?[^\s]+=[^\s]+)*\b/i

  • / =常规Expression
  • [^\s]+\.(?:com|net|org)的开始= As before
  • [^\?]+ =一个或多个非问号字符(可以是任何文件夹或文件名)。同样,问号前面有一个将其视为普通字符的符号,否则,它具有特殊含义here
  • \? =A Questionmark
  • [^\s]+\=[^\s]+ =一个或多个非空格,然后是等号,然后是一个或多个non-whitespaces
  • (?:\&?[^\s]+=[^\s]+)* =无或多组与符号\,然后是另一个或多个非空格、等号,和一个或多个non-whitespaces
  • \b = End of the string
  • / = End of the Regular Expression
  • i =不区分大小写

注意:此选项不会查找完全有效的URL,也不支持多种国家/地区代码(如澳大利亚的“.com.au”)或其他顶级域名(如“.edu”等)。但是,它将匹配twitter.com/ example ?var=true提供的示例字符串

票数 0
EN

Stack Overflow用户

发布于 2010-10-14 22:46:38

假阳性的风险是存在的,但很小。所以你确实可以使用类似这样的东西:

代码语言:javascript
复制
/\b(([-\w]{2,}\.)+(com|net|org|info)|www(\.\w{3,})+\.\w{2,6})\b/i

前半部分用于普通的.com/.net域名,后半部分与www匹配所有内容。前缀。如果除了完整的http:// urls之外还想检测这些域名,那就更难了。

票数 0
EN

Stack Overflow用户

发布于 2010-10-14 22:48:32

代码语言:javascript
复制
~(?:https?://)?(?:[-\w]+\.)+[a-z]{2,6}[^\s]*~

Regex@Rubular

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3934170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档