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

时间:2010-10-20 11:29:01

标签: javascript regex string

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

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 个答案:

答案 0 :(得分:11)

这种情况正在发生,因为你在字符类中有一个否定(^

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

所做的更改:

  • [0-9]\d相同。所以使用 他们中的任何一个,而不是两个,虽然使用它们并不是错误的,但它是多余的。
  • 添加了开始锚点(^)并结束 锚点($)以匹配整个 字符串不是部分
  • 添加了量词+,作为 字符类匹配单个 字符。

答案 1 :(得分:3)

^[A-Z\d&Ñ]+$

0-9不是必需的。

答案 2 :(得分:1)

如果您想要有效的模式,那么您应该删除字符范围中的^

[A-Z0-9\d&Ñ]

答案 3 :(得分:-1)

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

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

使用正则表达式(由codaddict指出)我们可以通过

实现相同目的
var validpattern = new RegExp('^[A-Z0-9&Ñ]+$');

感谢大家的宝贵回应。