如何获得仅允许0000或空格的正则表达式,而不是两者都
的示例:
答案 0 :(得分:6)
^(?:0+| +)$
<强>解释强>
^ # Start of string
(?: # Either match (but don't capture)...
0+ # one or more zeroes
| # or
[ ]+ # one or more spaces
) # End of non-capturing group (used to contain the alternation)
$ # End of string
答案 1 :(得分:1)
编辑: 此答案仅适用于允许前导和/或尾随空格的情况。在导致失败的空格问题中给出的唯一示例是空格分隔0
序列。
如果没有,则需要正则表达式,例如@Tim Pietzcker's answer。
您可以执行 toNumber 转换而不是正则表达式,因为只有空格的字符串将转换为0
,并且前导/尾随空格将被忽略。
我在这里使用一元+
运算符来执行 toNumber 转换。
if (+str === 0) {
// pass
}
有一点需要注意,空字符串也会转换为0
。如果不需要,您可以先测试.length
。
if (str.length && +str === 0) {
// pass
}
"0000000000000000000" // pass
" 000 " // pass
" " // pass
"000000000 0000" // fail
"afads0000 00 0fd" // fail
"" // pass first solution, fail second solution
答案 2 :(得分:0)
这应该有效:(0+)|( +)
,不是吗?