我完全迷失了。我需要一个正则表达式 可以检测下面的4个起始网址中的任意一个
^(.*http://.*|.*http%3A%2F%2F.*|.*https://.*|.*https%3A%2F%2F.*)$
而且.......
应该检测到: (任何标点符号或空格或退格)(大写或小写字母w的3倍)(一个点)(任何)
而且.......这很重要
应该忽略,但不能排除......以下完全字符串(或者是否存在于页面中)
http://www.w3.org
这对我来说很复杂,因为我仍然需要将它包含在正则表达式行中 即使它被忽略了,否则,它将匹配&
中找到 (.*http://.*|.*http%3A%2F%2F.*|.*https://.*|.*https%3A%2F%2F.*)
我的目标是找到/匹配除
之外的任何网址 http://www.w3.org
即使它在页面中,或者如果它不存在。 所以如果页面中只有这个:
http://www.w3.org
&安培;没有其他网址..那么它就不应该匹配。
感谢Tyler但我的正则表达式知识几乎为零,我只能知道当我右键单击它们以选择actionslike或regexr(
所以我根据我提供给你的网址更新了我的命令: HREF%3D%22http%3A%2F%2Fwww%2Edommermuth%2D1%2Ecom &安培;它有效:
HTTPS?(:// |%3A%2F%2F)(?!www.w3.org)(。*)
但由于我缺乏知识,我不明白如何做到这一点
"您可以做的是使http部分可选,或者必须匹配http或www或两者。这种类型的正则表达式出现在我最近回答的另一个问题中 - 针对不同的URL的多个preg_replace RegEx"
我尝试添加此功能,但它不起作用: (WWW)
现在我失踪的是检测到以www
开头的网址(任何标点符号或空格或退格键)(大写或小写字母w的3倍)(一个点)(直到到达空格或行尾的任何内容)
答案 0 :(得分:2)
好的,试试这个:
/\bhttps?(://|%3A%2F%2F)(?!www\.w3\.org)(.*)\b/g
该测试链接使用javascript样式的正则表达式,但应该在其他地方使用。
重要的一部分是下半部分 - 一个负向前瞻,检查后面的内容不确切文本www.w3.org
我压缩了你的内容:我匹配http
然后选择s
然后://
或%3A%2F%2F
。
我将整个事物包裹在单词边界中,您可以将其更改为引号或任何您需要的内容。全局标志可让您匹配多个项目。
关于OP的问题:
d%22 可以出现在http或https
之前这个缺失&应匹配: HREF%3D%22http%3A%2F%2Fwww%2Edommermuth%2D1%2Ecom
如果这很重要,只需在正则表达式之前和之后删除边界\b
,这样http就可以在任何地方匹配。
正则表达式命令应检测:(任何标点符号或空格或退格键)(大写或小写字母w的3倍)(一个点)(任何)
此正则表达式无法与http://google.com之类的链接匹配 - 查找www实际上不是检查链接的好方法。您可以做的是使http部分可选,或者必须匹配http或www或两者。这种类型的正则表达式出现在我最近回答的另一个问题中 - Multiple preg_replace RegEx for different URLs
编辑#2:
(任何标点符号或空格或退格键)(大写或小写字母w的3倍)(一个点)(直到到达空格或行尾的任何内容)
正如我上面提到的,你所描述的内容与http://google.com之类的网址不匹配 - 但如果这是你想要的,请使用:
(\W|^)[wW]{3}\.[^\s$]+
而不是那个,我认为你想要的是这个,这是我的第一个答案的组合,以及上面不同帖子的链接。
((https?(://|%3A%2F%2F))(www\.)|(https?(://|%3A%2F%2F))|(www\.))(?!(www\.)?w3\.org)([^</\?\s]+)[^<\s]*
您希望将此正则表达式与全局和不敏感标志一起使用