【问题标题】:javascript Regex for Absolute AND relative URl绝对和相对 URl 的 javascript 正则表达式
【发布时间】:2013-02-06 03:22:18
【问题描述】:

是否有任何正则表达式可以同时验证绝对 URL 和相关 URL 以用于 Javascript。

我确实有以下正则表达式,它适用于绝对 URL,除了它强制 HTTP 部分的部分。我希望它是可选的。

这是正则表达式:

/(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/;

谢谢

【问题讨论】:

  • 相对 URL 基本上可以是任何东西,因此您很难验证它

标签: javascript regex validation url-validation


【解决方案1】:

试试

/((http|ftp|https):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/;

它使(http|ftp|https):\/\/ (http://) 部分成为可选的

【讨论】:

  • 是的,它确实使 HTTp 部分是可选的,但仍然不接受相关路径,因此它确实接受 www.google.com 但它不接受 \page
【解决方案2】:

这个接受如下内容:

http://example.com
https://example.com.com
/mypage
/my/page/

但不是这样的

httpa://example.com
my/page/
www

正则表达式是:

/(^(https?:\/\/|\/)(?:www\.|(?!www))?[^\s])/

【讨论】:

  • 你的正则表达式只匹配https://或http://或/之后的第一个字符。
【解决方案3】:

以下应该有效:

/^(https?:\/\/|\/)\w+\.[^\s]+$|^\/[^\s]*$/

【讨论】:

    【解决方案4】:

    快速回答,将 Arun 的回答修改为接受 '/page'、'/page/subpage'、'page/subpage'

    /(\/?[\w-]+)(\/[\w-]+)*\/?|(((http|ftp|https):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?)/gi
    

    但实际上,使用 RegExp 验证 url 从来都不是件容易的事。很多边缘情况,例如'./page'、'../page'等。

    仔细分析你的需求,写下主要的测试用例,写一个正则表达式通过它们。并注意性能。

    【讨论】:

    • 由于某种原因,javascript 编辑器无法将此字符串识别为有效的正则表达式。
    • 哎呀,我只发布了文本部分。应在每一侧添加/。已经更新了答案。
    • 我实际上确实用旧的替换了这个新的,这里的问题是现在它需要任何东西。它还将接受纯文本作为有效的 URL :((
    • 因为我认为“纯文本”也是一个有效的相对网址。例如:<a href="page_on_same_path"> 或 <a href="sub/page_on_sub_path">
    • 这个正则表达式也将匹配单个单词字符。对于验证相对 url 并不完全有用。 Arun 下面的解决方案没有同样的问题。
    猜你喜欢
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 2018-12-13
    • 1970-01-01
    • 2012-06-17
    • 2011-03-27
    相关资源
    最近更新 更多