簡體   English   中英

正則表達式要求至少一個數字或留空

[英]Regex to require at least one digit or to be left blank

需要一些我正在嘗試創建的正則表達式的建議。

我需要檢查字符串是否包含至少一個數字(0-9)或者它可以留空。

這是檢查數字的正則表達式:

(.*[0-9]){1}.*$

如何修改它以允許空字符串?

您可以使用這樣的可選 非捕獲組

^(?:.*?\d.*)?$

請參閱regex101上的演示

也許你可以嘗試這樣的事情:

^($|.*[0-9])

即使^$不消耗任何字符,它們仍然可以在組內部和外部使用。

此外,根據您正在做的事情,您可能甚至不需要這些組:

^$|.*[0-9]

你可以用

^(?:(?=\D*\d)|^$).*


這說:

 ^ # start of the string (?: (?=\\D*\\d) # either match at least one number | # or ^$) # the empty string .* # 0+ characters 

請參閱regex101.com上的演示

適用兩種條件? (可選)標記:

^(\D*\d.*)?$

OP在問題下面的評論中提到了jquery。

您可以使用\\dtest()字符串中是否存在數字,並test()字符串的長度,如下面的代碼段所示。 這極大地簡化了正則表達式模式和測試。

 var a = [ 'cdjk2d', '', //valid 'abc', ' ' //invalid ] a.forEach(function(s){ if(s.length === 0 || /\\d/.test(s)) { console.log(s) } }) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM