2012-06-20 114 views
3

我有这样的正则表达式,用于检查一个5位数字^\d{5}$正则表达式5位数邮政编码或空

我如何改变它,这样它也返回true空字符串?

<script type="text/javascript"> 
var regex = /^\d{5}$/; 

alert(regex.test(12345)); 
alert(regex.test('')); 
</script> 

回答

7

括在(),并添加一个?,使整个模式可选。实际上,您可以匹配^\d{5}$^$(空字符串)。

var regex = /^(\d{5})?$/; 

console.log(regex.test(12345)); 
console.log(regex.test('')); 
// true 
// true 

// Too long, too short 
console.log(regex.test(123456)); 
console.log(regex.test('1')); 
// false 
// false 

需要注意的是,除非你打算做比证明他们是目前其他的5位数字的东西,你可以使用非捕获组(?:)节约资源的一点点。

var regex = /^(?:\d{5})?$/; 
+0

谢谢,所以'?'单独就够了,我需要'$'吗? –

+1

@RegisteredUser将'$'保留在最后,但在'()'中围绕'\ d {5}'并将'?'直接放在后面。 –

相关问题