【问题标题】:Jquery Postal code clientvalidateJquery 邮政编码客户端验证
【发布时间】:2011-01-20 10:43:54
【问题描述】:

我正在开发一个自定义验证器来验证和替换(如果可能的话)邮政编码。 这是一个荷兰邮政编码,应该看起来像“5050 AA”。当用户输入“5050AA”时,该邮政编码应替换为“5050 AA”。我通过将以下脚本添加到我的页面来尝试此操作,该脚本在 customvalidator 中调用:

 <script type="text/javascript">
            function Postcode_ClientValidate(source, arguments) {
                var val = arguments.Value
                var result = "";
                var myPCRegExp1 = new RegExp("^[1-9][0-9]{3}\s?[a-zA-Z]{2}$", "i");
                var myPCRegExp2 = new RegExp("(\d{4}) (\w{2})");    

                if ((!myPCRegExp1.test(val)) && (!myPCRegExp2.test(val))) {
                    arguments.IsValid = false;
                } else {
                    if (myPCRegExp1.test(val)) {
                        arguments.Value = val.replace(myPCRegExp1, "$1, $2");
                        arguments.IsValid = true;
                    } else if (myPCRegExp1.test(val)) {
                        arguments.IsValid = true;
                    }               
                }

                //jQuery("input#[HIERDEID]").val("Test");
            }
        </script>

但是,上面的脚本选择“5038AA”而不是“5038 AA”作为匹配项,因此我无法验证有效的邮政编码,也无法改写为有效的邮政编码。 我做错了什么?

这是一个标准的 .aspx 页面,带有一个表单和一个自定义验证器:

【问题讨论】:

    标签: javascript jquery asp.net regex


    【解决方案1】:

    试着用这个工具来解决它:

    http://derekslager.com/blog/posts/2007/09/a-better-dotnet-regular-expression-tester.ashx 用于测试这类事情。

    【讨论】:

      【解决方案2】:

      “5038 AA”也匹配 myPCRegExp1,因为 '\s?'

      我认为你需要这个:

      var myPCRegExp1 = new RegExp("^([1-9][0-9]{3})([a-zA-Z]{2})$", "i");
      

      【讨论】:

      • "5038 aa" 在针对 myPCRegExp1 进行测试时没有得到正确的结果,这就是整个问题。我需要“5038 AA”和“5038AA”来验证我的第一个正则表达式。如果它无效,我将返回一个错误,否则我将尝试将代码重写为“5038 AA”。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-09
      • 2018-07-21
      相关资源
      最近更新 更多