正则表达式只检查大写字母,两个特殊字符(&和Ñ)并且之间没有任何空格

Bik*_*iki 2 javascript regex string

我使用下面的代码片段来验证我的输入字符串:只有大写字母,数字和两个特殊字符(那些是&和Ñ)并且之间没有任何空格.

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

测试1:"XAXX0101%&&$#"应该失败即isvalidChars = false;(因为它包含无效字符,如%$#.

测试2:"XAXX0101&Ñ3Ñ&"应该通过.

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

上面的代码不起作用,任何人都可以帮我纠正上面的正则表达式.

cod*_*ict 11

发生这种情况是因为你有一个否定(^)的字符类.

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

做出的改变:

  • [0-9]和...一样\d.所以使用它们中的任何一个,而不是两者,尽管使用它们并不是不正确的,但它是多余的.
  • 添加了开始锚点(^)和结束锚点($)以匹配整个 字符串而不是它的一部分.
  • 添加了一个量词+,因为字符类匹配单个 字符.

  • @Biki:我们**只允许**大写字母,数字和两个特殊字符.所以这自动不允许任何**其他**字符,如空格. (2认同)