我试图找到一个简单正则表达式进行网址验证,但在复兴方面效果不是很好..
目前我有这样的正则表达式:(/^https?:\/\/\w/).test(url)
因此,它允许将网址验证为http://localhost:8080
等。
我想要做的是不来验证网址,如果他们最后有一些长特殊字符,例如:http://dodo.......
或http://dododo&&&&&
你能帮帮我吗?
答案 0 :(得分:6)
这个怎么样?
/^http:\/\/\w+(\.\w+)*(:[0-9]+)?\/?(\/[.\w]*)*$/
将匹配:http://domain.com:port/path
或仅http://domain
或http://domain:port
/^http:\/\/\w+(\.\w+)*(:[0-9]+)?\/?$/
匹配没有路径的网址
正则表达式块的一些解释:
域名 \w+(\.\w+)*
将文字与点匹配:localhost
或www.yahoo.com
(可能与路径或<一样长em>端口部分开始)
端口: (:[0-9]+)?
匹配或不匹配以分号开头的数字::8000
(并且它可能只有一个)
路径: \/?(\/[.\w]*)*
以匹配任何带有斜线和点的字母:/user/images/0001.jpg
(直到行尾)
(路径是非常有趣的部分,现在我这样做是为了允许单独或相邻的点,即这样的表达式是可能的:/.
或/./
或{{1如果你想在路径中有点像域部分 - 没有边框或相邻点,那么使用/.../
regexp,类似到域部分。)
*更新*
此外,如果您希望在您的网址(或任何其他网址)中包含(有效)\/?(\/\w+(.\w+)*)*
个字符,则只需展开字符类以获取“网址文字匹配” ,即-
应该变为\w+
,依此类推。
答案 1 :(得分:2)
如果您想匹配ABCD
,那么您可以离开开始部分..
例如匹配http://localhost:8080
'只需写
/(localhost).
如果你想匹配特定的东西,那么请关注你想要搜索的词,而不是句子的开头和结尾。
正则表达式用于搜索术语,直到我们对其具有严格的规则。 :)
我希望这样做..
答案 2 :(得分:1)
这取决于你需要Regex的复杂程度。一种简单的方法就是接受单词(和端口/域):
^https?:\/\/\w+(:[0-9]*)?(\.\w+)?$
请记住,您需要使用+
字符来匹配一个或更多字符。
答案 3 :(得分:0)
<div class='tick--validation'></div>
答案 4 :(得分:-1)
^https?:\/\/(localhost:([0-9]+\.)+[a-zA-Z0-9]{1,6})?$
将符合以下情况:
不符合以下情况: