正则表达式要求至少一个数字或留空

问题描述 投票:3回答:5

需要一些我正在尝试创建的正则表达式的建议。

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

这是检查数字的正则表达式:

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

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

jquery regex string
5个回答
3
投票

也许你可以尝试这样的事情:

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

即使^$不消耗任何角色,它们仍然可以在群体的内部和外部使用。

此外,根据您正在做的事情,您可能甚至不需要这些组:

^$|.*[0-9]

3
投票

你可以像这样使用optional non-capturing group

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

See demo at regex101


2
投票

你可以用

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


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

a demo on regex101.com


0
投票

使用?(可选)标记应用这两个条件:

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

0
投票

OP在问题下面的评论中提到了jquery。

您可以使用\dtest()测试字符串中是否存在数字,并测试字符串的长度,如下面的代码段所示。这极大地简化了正则表达式模式和测试。

var a = [
  'cdjk2d', '', //valid
  'abc', ' ' //invalid
]
a.forEach(function(s){
  if(s.length === 0 || /\d/.test(s)) {
    console.log(s)
  }
})
© www.soinside.com 2019 - 2024. All rights reserved.