我刚注意到一个很奇怪的行为。为什么简单的空间会打破所有的测试?Javascript,正则表达式和{n,m}
rePattern = /^([a-z]+[-_]?){2,}[a-z]$/;
var test = new Array("jhgfg_hfh-g", "jhg-fg_hfhg", "jhg_fg_hfhg", "jhg_fg_hfhg", "jhg_fghfhg");
for (var i = 0; i < test.length ; i++) {
x = test[i];
alert(i + ' : ' + x + ' : ' + rePattern.test(x));
}
如果我改变了上面
// notice {2,} => {2, } with an extra space before }
rePattern = /^([a-z]+[-_]?){2, }[a-z]$/;
那么一切都变得false
...
感谢ü
由于额外的空间,很明显。正则表达式的语法是严格的,你不能添加随机空白,并期望它会被忽略。 '{2,}'将匹配文字'{2,}'。 – duri
@duri你的评论就是答案,你为什么不把它发布为答案? – stema
好的,对不起,我确定它没问题..只是在Python中测试它,你也在那里... – lctv31