-1

我怎样才能得到一个只允许 0000 或空格,但不能同时允许的正则表达式

例子:

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

3 回答 3

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
于 2012-04-19T15:55:12.967 回答
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
于 2012-04-19T15:56:58.010 回答
0

这应该有效:(0+)|( +)不是吗?

于 2012-04-19T15:56:28.090 回答