修改给定的 jquery 验证器方法以检查字符串是否不包含 URL
Modify given jquery validator method to check if sting contains no URL
我有一个 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');
现在我需要修改它来检查一个 sting 是否不包含 URL
我要:
URL(真)
URL 一些话 (True)
一些词URL(真)
一些词URL一些词(正确)
一些词(错误)
注意:如果不建议为此目的修改现有方法,请告诉我是否存在可用于检查 sting 是否不包含 URL.
的正则表达式
@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
/[=,则匹配失败17=] 后跟一个可选的 s
然后是 ://
然后是任何非空白字符
(?!.*\bwww\.)
- 如果在除换行符之外的任何零个或多个字符之后有一个完整的单词 www
然后是 .
.[=37,则匹配失败=]
我有一个 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');
现在我需要修改它来检查一个 sting 是否不包含 URL
我要:
URL(真)
URL 一些话 (True)
一些词URL(真)
一些词URL一些词(正确)
一些词(错误)
注意:如果不建议为此目的修改现有方法,请告诉我是否存在可用于检查 sting 是否不包含 URL.
的正则表达式@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
/[=,则匹配失败17=] 后跟一个可选的s
然后是://
然后是任何非空白字符(?!.*\bwww\.)
- 如果在除换行符之外的任何零个或多个字符之后有一个完整的单词www
然后是.
.[=37,则匹配失败=]