需要一些我正在尝试创建的正则表达式的建议。
我需要检查字符串是否包含至少一个数字(0-9)或者它可以留空。
这是检查数字的正则表达式:
(.*[0-9]){1}.*$
如何修改它以允许空字符串?
也许你可以尝试这样的事情:
^($|.*[0-9])
即使^
和$
不消耗任何角色,它们仍然可以在群体的内部和外部使用。
此外,根据您正在做的事情,您可能甚至不需要这些组:
^$|.*[0-9]
你可以用
^(?:(?=\D*\d)|^$).*
^ # start of the string
(?:
(?=\D*\d) # either match at least one number
| # or
^$) # the empty string
.* # 0+ characters
使用?
(可选)标记应用这两个条件:
^(\D*\d.*)?$
OP在问题下面的评论中提到了jquery。
您可以使用\d
和test()
测试字符串中是否存在数字,并测试字符串的长度,如下面的代码段所示。这极大地简化了正则表达式模式和测试。
var a = [
'cdjk2d', '', //valid
'abc', ' ' //invalid
]
a.forEach(function(s){
if(s.length === 0 || /\d/.test(s)) {
console.log(s)
}
})