【问题标题】:Modify existing url validation regular expression to accept few more urls in javascript修改现有的 url 验证正则表达式以在 javascript 中接受更多的 url
【发布时间】:2011-07-26 12:12:53
【问题描述】:

目前我正在使用:

/^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?    \,\'\/\\\+&%\$#_]*)?$/

作为我验证 URL 的正则表达式。

这无法检查以下网址:

domain.com、www.domain.com、m.some.com、m.some.com?test=test、http://www.some.com/?param=%20test

有人可以帮我修改吗?我已经很少有功能可以正常工作了。所以找不到一个全新的。

提前致谢。

【问题讨论】:

    标签: javascript regex validation url


    【解决方案1】:

    试一试 - 你真的很亲密:

    /^((ht|f)tp(s?)\:\/\/)?[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(\.[a-zA-Z0-9\-_]+)+(:(0-9)*)*((\/?)|((\/[a-zA-Z0-9\.\-_]+)+)?)(\?[a-zA-Z0-9\-\.\?    \,\'\/\\\+&%\$#=\.\-_]*)?$/;
    

    【讨论】:

    • 这个表达式的问题是它接受任何字符,如“ajnfgf”“23724”等。
    • @Daemonthread - 很好 - 现在至少有一个 '.[character]' 要求......所以,ajnfgf.q 可以工作,在新的 DNS 世界中它实际上可能是一个域,如果有人想花 150k 注册 .q :)
    • 端口号不起作用,除非用 [] 而不是 () 包围,对吧?
    【解决方案2】:

    作为第一个近似值,这将解决您的问题:

    /^((ht|f)tp(s?)\:\/\/)?[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)((?:&|[a-zA-Z0-9\-_=.?,'\/+%\$#])*)?$/
    

    【讨论】:

    • @Brian:你是对的,只是修复了它。不过,您的解决方案似乎不适用于其他一些非常常见的模式;-) 尝试“some.com/dir/page.html”或“some.com/dir/page.html?p=1”,不匹配...
    • 另外,没有看到你的评论——你说得对,我没有放“。”在字符列表中...更新。
    猜你喜欢
    • 2013-08-24
    • 2012-03-29
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2014-07-30
    • 2021-02-24
    • 1970-01-01
    相关资源
    最近更新 更多