我怎样才能得到一个只允许 0000 或空格,但不能同时允许的正则表达式
例子:
- 0000000000000000000 --> 好的;
- 只有空格 --> 好的;
- 000000000 0000 --> 不行;
- afads0000 00 0fd --> 不行;
我怎样才能得到一个只允许 0000 或空格,但不能同时允许的正则表达式
例子:
^(?: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
编辑:此答案仅适用于您允许前导和/或尾随空格的情况。在导致失败的空格问题中给出的唯一示例是空格分隔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
这应该有效:(0+)|( +)
不是吗?