我使用下面的代码片段来验证我的输入字符串:只有大写字母,数字和两个特殊字符(那些是&和Ñ)&没有任何空间。
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"
应该失败,因为它包含空格
以上代码无效,任何人都可以帮我纠正上述正则表达式。
答案 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&Ñ]+$');
感谢大家的宝贵回应。