2012-06-20 85 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}'並將'?'直接放在後面。 –

相關問題