【发布时间】:2017-10-26 11:08:53
【问题描述】:
在 Parsley URL 验证中,很少有有效的 URL 失败。
示例网址
http://abc-ap/acde/
http://abc-test-web/~bd/test.php/login
在我的 URL 中,我没有 .com、.in、.net 等来提及域扩展名。
Ruby 代码
<%= f.text_field :url, value: url, id: 'chat_url',
data:{
parsley_required: '',
parsley_type: 'url',
parsley_validate_url: true,
parsley_validate_url_message: 'Error'
}
%>
JS代码
window.Parsley.addValidator('validateUrlString', {
validateString: function (_value) {
var regex = /^(https?:\/\/)?([\da-z\-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/;
console.log('Value='+_value);
return !regex.test(_value);
}
});
进一步澄清 - JSFiddle 链接
【问题讨论】:
-
这里没有问题!并且小提琴中的正则表达式与“JS代码”部分不同。
-
问题中的正则表达式 将 使样本失败,因为它在主机/域部分需要
.。小提琴中的正则表达式基本上会匹配任何东西,并且非常有缺陷。例如。你有经典的A-z错误。 Check this answer. -
@ClasG :我尝试并粘贴了我的方法。但仍然没有成功。
-
嗯...?你读过我的cmets吗? 1. 问题在哪里? 2. 你问的是哪个代码 - 问题中的那个还是小提琴中的那个?
-
@ClasG - 感谢您的回复。其实我只是在寻找正则表达式。函数的其余部分已准备好测试其余部分。
标签: javascript regex ruby-on-rails-5 parsley.js