如何获得仅允许0000或空格的正则表达式

时间:2012-04-19 15:51:18

标签: javascript regex

如何获得仅允许0000或空格的正则表达式,而不是两者都

的示例:

  1. 0000000000000000000 - >好;
  2. 仅限空格 - >好;
  3. 000000000 0000 - >不好;
  4. afads0000 00 0fd - >不行;

3 个答案:

答案 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+)|( +),不是吗?