繁体   English   中英

正则表达式 javascript - url 与本地主机匹配

[英]Regexp javascript - url match with localhost

我正在尝试为 url 验证找到一个简单的正则表达式,但在正则表达式方面不是很好..

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

所以它允许将 url 验证为http://localhost:8080等。

我想要做的是验证 url 如果它们在末尾有一些长的特殊字符,例如: http://dodo.......http://dododo&&&&&

你可以帮帮我吗?

这个怎么样?

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

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

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

匹配没有路径的 URL

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

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

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

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

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

* 更新 *

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

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

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

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

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

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

例如匹配http://localhost:8080

' 写就好了

/(localhost).

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

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

我希望这会做..

^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 但您可能需要添加额外的逻辑

你可以用这个。 这也将允许 localhost 和 live 域。

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

我来晚了,但现在你应该考虑用URL class 验证你的 URL。避免令人头疼的正则表达式并依赖标准

let isValid;
try {
    new URL(endpoint); // Will throw if URL is invalid
    isValid = true;
} catch (err) {
    isValid = false;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM