【问题标题】:javascript jquery regex for validate a URL用于验证 URL 的 javascript jquery 正则表达式
【发布时间】:2012-01-24 18:20:57
【问题描述】:

我正在使用以下正则表达式来验证网址,

jQuery.validator.addMethod("url_validation", function (value, element) {
return this.optional(element) || /^(([http|https|HTTPS|HTTP]+:\/\/))?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/i.test(value);
}, "error");

这个正则表达式工作正常。但是当我验证 http://www.alfaromeo.com/com/#/home 时,它说 url 无效。当我启用 # 时,正则表达式无法验证某些验证。那么,任何人都可以提出修改此正则表达式以验证 # 的建议,它位于 url 中。

我参考了regular expressions how to validate a URL 来获取这个正则表达式。

谢谢。

【问题讨论】:

    标签: javascript jquery regex url


    【解决方案1】:
    ^(([http|https|HTTPS|HTTP]+:\/\/))?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([#-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$
    

    我变了

    (\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)
    

    (\/([#-+_~.\d\w]|%[a-fA-f\d]{2,2})*)
    

    即便如此,不要指望它适用于你可能扔给它的每个 URL...

    【讨论】:

    • 我偷了这个,它在查询字符串中的逗号 (,) 上中断了。
    • 正如我所说,它可能不适用于所有可能的 URL。在我的回答中,我刚刚修改了正则表达式以处理 OP 提供的 URL。
    最近更新 更多