我正在尝试查找符合W3C标准的URL正则表达式,以用于JavaScript中的HTML5“url”输入类型。
我不知道其他部分,但乍一看,它最多只能在规范的“可能被空格包围”部分上失败。
有其他人尝试过这样做吗?有人知道我可以找到符合规定的正则表达式吗?
谢谢,罗宾。
请参见要求的W3C规范。
两种可能性:
我发现了这个关于URL正则表达式的另一个StackOverflow问题,看起来非常有前途:
存在一个HTML5表单验证jQuery插件,它应该模拟HTML5表单验证功能。
此脚本使用以下正则表达式:
/(https?|ftp):\/\/(((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-zA-Z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-zA-Z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?/
我不知道其他部分,但乍一看,它最多只能在规范的“可能被空格包围”部分上失败。
有其他人尝试过这样做吗?有人知道我可以找到符合规定的正则表达式吗?
谢谢,罗宾。
^
并在结尾处添加$
),那么您的担忧就是合理的。而且您应该锚定它--否则,有人可能会在字符串的开头或结尾放置非法字符,而您仍然会报告成功匹配。 - Joe White\s*
即可。然而,我仍然不确定a)这是否真正符合标准,b)它是否符合RFC3986和RFC3987中的两个或仅一个?我欢迎专家提供进一步的意见。 - Robin Winslow