【问题标题】:regex value check not working正则表达式值检查不起作用
【发布时间】:2014-02-03 15:23:06
【问题描述】:

这里是the page

如果您选择 3 个调制解调器之一,它将打开下面的表格。

在帐单 > 地址行 1 字段(左列)中,我正在尝试检查邮政信箱条目并在该字段上方显示隐藏消息。我们试图阻止 PO Box,但它仍应允许提交,因此我将与表单上的 jq val 插件分开处理。

无论我尝试什么,它都无法正常工作。输入上的绑定正在工作,因为它记录正确,一定是正则表达式的问题,但我无法确定它。

这是当前的js

var pobox = new RegExp('[PO.]*\\s?B(ox)?.*\\d+', 'i');

$("#bill_address1").bind("change paste keyup", function(){
        if ($(this).val().match(pobox)) {                               
            $('#pobox-warning').fadeIn(50);
            console.log('box');    
        }       
        else {
            $('#pobox-warning').fadeOut(50);
            console.log('no box'); 
        }

    });

任何帮助将不胜感激 - 谢谢!

【问题讨论】:

  • 它对我有用 :) 你的表情可能只是需要调整以捕捉更多场景。
  • 这有点奇怪 P.O.框验证:“...B993293223”。您如何描述您想要接受或拒绝的有效内容,以便我们提供帮助。
  • 不能解决您的问题,但在您使用正则表达式的情况下,.test().match() 更有意义。
  • 除其他外,您正在转义字符类中的反斜杠。 "\\s" 匹配文字 "\s",而不是空格。
  • @MichaelL。在这种情况下不是 - 他正在使用 RegExp 构造函数,因此有必要将反斜杠加倍。

标签: javascript jquery regex validation


【解决方案1】:

在我看来,一个简单的正则表达式模式就像

/PO *Box/gi

效果最好。忽略大小写。匹配字母 PO 和后跟单词 Box 的任意数量的空格。

编辑:

或匹配整个邮政信箱行,带或不带句点:

/P\.?O\.? *Box *\d*/gi

【讨论】:

    【解决方案2】:

    正则表达式的开头部分匹配单个“P”、“O”或“.”。你可能想要更多类似的东西:

    var pobox = /(P\.?O\.?)?\s*B(ox)?.*\d+/i;
    

    如果可能,在 JavaScript 中使用本机正则表达式语法会容易得多,就像在这种情况下一样。

    【讨论】:

    • 这将匹配“PO Box 123”、“Box 123”或“PO. Box 123”,但不匹配“P.O. Box 123”。
    • @MichaelL。是的,这是真的;它可以使用额外的可选“。” :)
    【解决方案3】:

    让它工作 var pattern = /^[P|p](OST|ost).*\s*[O|o|0](ffice|FFICE).*\s *[B|b][O|o|0][X|x]\s*(\d.)*/gi;

    感谢大家的意见

    【讨论】:

      猜你喜欢
      • 2013-07-12
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 2015-06-19
      相关资源
      最近更新 更多