【发布时间】:2016-03-03 07:49:25
【问题描述】:
以下正则表达式:
(http|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?
符合以下条件:
https://something.com,
https://www.something.com,
http://something.com,
http://www.something.com
但以下内容不应该与当前正则表达式匹配:
https://www.something, http://www.something
还应该匹配当前正则表达式不匹配的以下内容:
something.com, www.something.com
而且它还匹配任何域,我想做的只是接受已知域(例如:.com、.net、.biz 等)。
如何改进上述正则表达式?
【问题讨论】:
-
^(http|https|ftp|)\://|[a-zA-Z0-9\-\.]+\.[a-zA-Z](:[a- zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*[^ \.\,)(\s]$
-
但我猜 www.something 也会匹配
-
不确定这是一个好的模式,我只会发表评论:
https?:\/\/(?!www\.[^\s.]+\b(?!\.))[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?。根据你的。排除在http之后有www.的网址,然后在单词边界之前没有点的部分不带点。 -
嗨@WiktorStribiżew,不确定我是否可以这样说,但从您提到的以下链接中:regex101.com/r/mY6rC3/2 允许用于
http://www.something. and https://www.something.,但不允许用于@987654331 @ 而且,无论如何只允许用户输入已知域(例如:.com、.net、.biz、.org 等)。谢谢 -
嗨@Khazratbek,我已经尝试过你的代码,但它对我来说效果不佳。
标签: javascript asp.net regex