修改给定的 jquery 验证器方法以检查字符串是不是不包含 URL

Posted

技术标签:

【中文标题】修改给定的 jquery 验证器方法以检查字符串是不是不包含 URL【英文标题】:Modify given jquery validator method to check if sting contains no URL修改给定的 jquery 验证器方法以检查字符串是否不包含 URL 【发布时间】:2021-08-09 12:00:19 【问题描述】:

我有一个 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一些词(真)

一些词(假)

注意:如果不建议为此目的修改现有方法,请告诉我是否存在可用于检查 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");

【问题讨论】:

对不起,你是什么意思?如果我们不能修改代码,那么正则表达式将在哪里使用? 新的正则表达式将用于添加新的 jquery 验证方法,请参阅更新的问题。 你的rules 说什么? 我想阻止输入包含url的字符串 正如您在其他问题的评论中所解释的那样,您的布尔值都是向后的。如果您想要“无 URL”,则该方法在看到 URL 时必须返回 false。对于这个插件,false => 验证失败,true => 通过验证。 【参考方案1】:

你可以使用

$.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/httpsftp/ftps 后跟可选的 s://,则匹配失败然后是任何非空白字符 (?!.*\bwww\.) - 如果在除换行符之外的任何零个或多个字符之后,有一个完整的单词 www 然后是 .,则匹配失败。

【讨论】:

感谢您的宝贵时间,请包括 ftp 和 www。在正则表达式中。

以上是关于修改给定的 jquery 验证器方法以检查字符串是不是不包含 URL的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 表单验证检查以循环结束

Laravel 验证 - 如何检查给定数组中是不是存在值?

使用 Jquery each() 循环输入字段以进行验证

在jQuery中验证邮政编码? [复制]

检查以确保所有字段都已填写 Jquery

PHP(或jQuery)有没有办法检查字符串是不是是人类可读的?