使用Javascript进行URL验证;我工作不好
URL validation using Javascript doesn't work well
我对url使用以下验证:
jQuery.validator.addMethod("urlValidatorJS", function (value, element) {
var RegExp = (/^HTTP|HTTP|http(s)?:'/'/(www'.)?[A-Za-z0-9]+(['-'.]{1}[A-Za-z0-9]+)*'.[A-Za-z]{2,40}(:[0-9]{1,40})?('/.*)?$/);
return this.optional(element) || RegExp.test(value);
}, "The url is incorrect");
由于某些原因,根据上面的验证,以下无效url是有效的:http://www.example.com/%20here.html(带空格的url)。
如何修复验证?
('/.*)?
你说URL中的最后一个(可选)是一个斜杠,后面跟着任意数量的任意字符。
如果您不想留出空间,请比.
更具体。
首先:jQuery中已经有一个验证模块可以使用。
这将是您的正则表达式,以匹配您提到的URL(最后不要错过i标志!):
/^(https?:'/'/)(?:[A-Za-z0-9]+(['-'.][A-Za-z0-9]+)*'.)+[A-Za-z]{2,40}(:[1-9][0-9]{0,4})?('/'S*)?/i
你错过了也可能有其他地址,如http://some.other.example.com
。正如在另一个答案中提到的,您的标识符.
太贪婪了。对于任何非空白字符,我用'S
替换了它。在正则表达式的第一部分中,您也有一些不必要的标识符,如{1}
和额外的HTTP
。
您也可以使用类似regex101的页面来检查您的regex,并在不同的字符串上尝试它。它还解释了正则表达式的每个部分,以便您可以更好地调试它。
相关文章:
- 自定义验证器不工作
- JavaScript表单验证-“;“错误”;不按需要工作
- javascript正则表达式验证未按预期工作
- 表单验证工作不正常,在不检查条目的情况下继续
- 为什么Angularjs验证don't与输入[type=“number”]一起工作
- 表单验证在接近尾声时停止工作
- 在键上验证正在工作,但在按键时它不起作用
- 表单验证在 HTML 中工作的 Visualforce 中不起作用
- CSS 类在验证时只工作一次
- 在角度验证中禁用 ng 无法按预期工作
- 为什么我的 Javascript 表单验证无法正常工作
- RubyonRails中的JavaScript表单验证-让JS正常工作,但我该把它放在哪里
- 添加Jquery验证后,Jquery日期选择器无法工作
- 输入字段验证的键代码函数在chrome中没有按预期工作
- 使用javascript的十进制验证未按预期工作
- 我正在尝试使用jqueryValidation引擎插件验证注册表单,有些验证无法正常工作
- 主干.js:在将模型添加到集合之前不进行工作验证
- 不;对传递给指令AngularJS的表单进行工作验证
- 不能正常工作验证引导jalali日期拾取器
- 为什么这个JQuery点击功能不工作?(验证按钮)