【问题标题】:how to avoid enduser from giving urls in textarea jquery如何避免最终用户在 textarea jquery 中提供 url
【发布时间】:2010-12-06 12:38:03
【问题描述】:

我想避免用户使用 (JQuery) 客户端验证在文本区域中提交网站 URL。我正在使用Validation 插件。

例子:

http://www.example.com

我需要验证用户何时在文本区域输入 http:// 或 www

【问题讨论】:

    标签: php jquery jquery-plugins jquery-validate


    【解决方案1】:

    您可以使用带有匹配正则表达式的自定义函数,如下所示:

     $.validator.addMethod('no_url', function validatePositionNummer(value){
    
                var re = /^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$/;
                var trimmed = trim(value);
                if( trimmed == ''){
                    return true;
                }
                    return trimmed.match(re);
    
            },"No URLs allowed!");
    

    然后您只需将新的自定义验证方法添加到元素:

     $("#your_form").validate({ 
    textarea: no_url 
    });
    

    当然,你必须微调正则表达式。

    【讨论】:

    • 为什么要明确大小写而不是不区分大小写的匹配?您不会将 CoM 与那个(或 BIZ、博物馆或任何 CCTLD)相匹配。
    【解决方案2】:

    网址或链接?有区别。

    但是,无论哪种情况,都不要忘记检查后端。您不能信任客户端验证。它应该只用于让用户的生活更轻松。

    【讨论】:

    • 我正在使用 php 在后端进行验证。我只需要在前端检查.. 示例:example.com 我想避免这个链接
    【解决方案3】:

    @BernardMarx 感谢您的解决方案。

    在这里,我根据我的要求使用了额外的正则表达式来验证协议。现在我需要在最后进行验证。请建议..

    例如:

    http://www.example.com/index.php

    http://www.example.php/home/

    $.validator.addMethod('no_url', function validatePositionNummer(value){
    
        var re = /^[a-zA-Z0-9\-\.\:\\]+\.(com|org|net|mil|edu|COM|ORG|NET|MIL|EDU)$/;
    
        var  re1 = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/; 
    
        var trimmed = $.trim(value);
    
        if( trimmed == '' ){
    
           return true;
        }
    
        if( trimmed.match(re) == null && re1.test(trimmed) == false){
    
           return true;
        }
    
    },"No URLs allowed!");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 2013-12-20
      • 1970-01-01
      • 2011-12-21
      • 2017-09-09
      • 2020-07-29
      相关资源
      最近更新 更多