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

时间:2018-03-06 19:16:58

标签: jquery regex string

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

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

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

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

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

5 个答案:

答案 0 :(得分:3)

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

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

See demo at regex101

答案 1 :(得分:3)

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

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

即使^$不使用任何字符,它们仍然可以在组内部和外部使用。

此外,根据您的工作情况,您甚至可能不需要这些小组:

^$|.*[0-9]

答案 2 :(得分:2)

您可以使用

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

<小时/> 这说:

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

请参阅a demo on regex101.com

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

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

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