5

我试图找到一个用于 url 验证的简单正则表达式,但在正则表达式方面不是很好。

目前我有这样的正则表达式:(/^https?:\/\/\w/).test(url)

所以它允许验证网址http://localhost:8080等。

我想要做的不是验证 url,如果它们最后有一些长的特殊字符,比如:http://dodo.......http://dododo&&&&&

你可以帮帮我吗?

4

5 回答 5

12

这个怎么样?

/^http:\/\/\w+(\.\w+)*(:[0-9]+)?\/?(\/[.\w]*)*$/

将匹配:http://domain.com:port/path或只是http://domainhttp://domain:port

/^http:\/\/\w+(\.\w+)*(:[0-9]+)?\/?$/

匹配没有路径的 URL

 

正则表达式块的一些解释:

域: \w+(\.\w+)*用点匹配文本:localhostwww.yahoo.com(只要路径端口部分开始)

端口: (:[0-9]+)?匹配或不匹配以分号开头的数字:(:8000可能只有一个)

路径: \/?(\/[.\w]*)*匹配任何带有斜线和点的字母:(/user/images/0001.jpg直到行尾)

路径是非常有趣的部分,现在我这样做是为了允许单独或相邻的点,即这样的表达式是可能的:/././/.../等。如果你想在路径中像部分一样有点 - 没有边框或相邻的点,然后使用正则\/?(\/\w+(.\w+)*)*表达式,类似于部分。)

* 更新 *

此外,如果您想-在您的 URL(或任何其他)中包含(有效的)字符,您应该简单地扩展“URL 文本匹配”的字符类\w+,即应该成为[\-\w]+等等。

于 2013-09-09T11:12:26.933 回答
2

这取决于您需要正则表达式的复杂程度。一种简单的方法是只接受单词(和端口/域):

^https?:\/\/\w+(:[0-9]*)?(\.\w+)?$

请记住,您需要使用+字符来匹配一个或多个字符。

当然,还有更好、更复杂的解决方案

于 2013-09-09T11:10:30.020 回答
2

如果你想匹配,ABCD那么你可以离开开始部分..

例如匹配http://localhost:8080

' 写吧

/(localhost).

如果你想匹配特定的东西,那么请关注你要搜索的词,而不是句子的开头和结尾。

正则表达式用于搜索术语,直到我们有一个严格的规则。:)

我希望这会做..

于 2013-09-09T11:58:24.290 回答
0
^https?:\/\/localhost:[0-9]{1,5}\/([-a-zA-Z0-9()@:%_\+.~#?&\/=]*)

匹配:

  • https://localhost:65535/file-upload-svc/files/app?query=abc#next

不匹配:

  • https://localhost:775535/file-upload-svc/files/app?query=abc#next

解释

  • 它只能用于本地主机
  • 它还会检查端口号的值,因为它应该小于 65535,但您可能需要添加额外的逻辑
于 2020-11-05T00:14:28.110 回答
-2
^https?:\/\/(localhost:([0-9]+\.)+[a-zA-Z0-9]{1,6})?$

将匹配以下情况:

将不匹配以下情况:

于 2017-06-17T08:23:17.053 回答