我有一个jquery验证器方法,可以检查是否输入了URL,它可以很好地进行
$.validator.addMethod('contains_no_url', function(value, element) {
var url = $.validator.methods.url.bind(this);
return url(value, element) || url('http://' + value, element);
}, 'Do not include url');
现在我需要修改它来检查一个刺痛是否不包含URL
我想要:
URL(真(
URL某些单词(True(
一些单词URL(True(
一些单词URL一些单词(True(
一些单词(错误(
注意:如果不建议为此目的修改现有方法,请告诉我是否存在可用于检查sting是否不包含URL的regex。
@Wiktor Stribiżew更新评论
新的正则表达式将与以下一起使用
$.validator.addMethod('contains_no_url', function (value, element) {
return this.optional(element) || SOME_REGEX.test(value);
}, "Do not include url");
您可以使用
$.validator.addMethod('contains_no_url', function(value, element) {
return this.optional(element) || /^(?!.*(?:ht|f)tps?://S)(?!.*bwww.)/.test(value);
}, 'Do not include url');
$('#myform').validate({
rules: {
"url": {
required: true,
contains_no_url: true
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/jquery.validate.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.1/additional-methods.js"></script>
<form id="myform" action="">
<input type="text" name="url" id="url" /><br/>
<br/>
<input type="submit" />
</form>
这里,
^
-匹配字符串的开头(?!.*https?://S)
-如果在换行字符以外的任何零个或多个字符之后,有http
/https
或ftp
/ftps
,然后是可选的s
,然后是://
,然后是任何非空白字符,则匹配失败(?!.*bwww.)
-如果在换行字符以外的任何零个或多个字符之后,有一个完整的单词www
,然后是一个.
,则匹配失败