我需要验证一个字符串,该字符串可以包含任意数量的字符,逗号和2个字符。我有一些问题。下面是我有:正则表达式问题 - 字符限制和空白忽略
var str="ab,cdf";
var patt1=new RegExp("[A-z]{2,}[,][A-z]{2}");
if(patt1.test(str)) {
alert("true");
}
else {
alert("false");
}
我希望它可以返回false,因为我对角色的{2}
限制逗号后,这串具有三个字符。但是,当我运行fiddle时,它会返回true。我对RegExp的理解(当然是有限的)表明{2,}
至少是2,而{2}
恰好是2,所以我不确定为什么在逗号后面的三个字符仍然返回true。
我还需要能够忽略逗号和其余两个字符之间可能的空格。 (换句话说,如果它们在逗号之前有2个字符,而在它之后有两个字符,那么我希望它返回true - 两个之后它不包括用户可能已输入的任何空格。)
所以所有这些应该返回true:
var str = "ab, cd";
var str = "abc, cd";
var str = "ab,cd";
var str = "abc,dc";
我已经试过逗号这样以后添加\S
指标:
var patt1=new RegExp("[A-z]{2,}[,]\S[A-z]{2}");
但随后的字符串返回false所有的时间,甚至当我有它设置为ab, cd
,这应该返回true。
我错过了什么?
[你摆弄的代码(http://jsfiddle.net/EmmyS/z2fTr /)实际上与[您的问题的代码](http://stackoverflow.com/q/17751150/578288)不同。它表示“{2,}”而不是“{2}”。但这不是问题;当我解决这个问题时,你的小提琴仍然会提示'真实'。 –
你的'\ S'问题(除了它应该是'\ s'的事实)是字符串转义。你在''''引号内加载你的正则表达式,而不是'''文字的语法,所以你需要在你引用内的任何'\'字符转义为\\'。 –
尝试http://regexpal.com/这是很好的实验。 – Jacob