代码之家  ›  专栏  ›  技术社区  ›  Biki

Regex只检查大写字母、两个特殊字符(&and)&

  •  2
  • Biki  · 技术社区  · 14 年前

    我使用下面的代码片段验证我的输入字符串:只有大写字母、数字和两个特殊字符(它们是&和)&之间没有任何空格。

    var validpattern = new RegExp('[^A-Z0-9\d&Ñ]');
    if (enteredID.match(validpattern))
       isvalidChars = true;
    else
       isvalidChars = false;
    

    测试1: "XAXX0101%&&$#" 应该失败,即 isvalidChars = false; %$# .

    测试2: "XAXX0101&Ñ3Ñ&"

    测试3: "XA 87B" 应该失败,因为它在两个之间包含空格

    4 回复  |  直到 14 年前
        1
  •  11
  •   codaddict    14 年前

    这是因为你有一个否定词( ^ ) 里面

    你想要的是: ^[A-Z0-9&Ñ]+$ ^[A-Z\d&Ñ]+$

    所做的更改:

    • [0-9] \d . 所以使用 它们中的任何一个,不是两个,尽管两者都使用并不错误,但都是多余的。
    • 添加了起始锚点( ^ )结束 锚( $ )匹配 整个的 部分 是的。
    • 添加量词 + 字符类与 单一的 性格。
        2
  •  3
  •   N 1.1    14 年前
    ^[A-Z\d&Ñ]+$
    

    0-9 不需要。

        3
  •  1
  •   ghostdog74    14 年前

    ^ 在字符范围内。

    [A-Z0-9\d&Ñ]

        4
  •  -1
  •   Biki    12 年前

    使用jquery,我们可以在一行中实现相同的功能:

    $('#txtId').alphanumeric({ allow: " &Ñ" });
    

    使用regex(正如codadict所指出的),我们可以通过

    var validpattern = new RegExp('^[A-Z0-9&Ñ]+$');
    

    感谢各位的宝贵回复。