Regex 以零开头的正则表达式数,一个或多个空格后跟加号或减号

Regex 以零开头的正则表达式数,一个或多个空格后跟加号或减号,regex,Regex,我有以下正则表达式 ^(\s)*[+-]?\d+$ 如果输入在第一个非空格字符之前包含多个空格,则失败。 目前,它正在研究下一个示例 - :false -1 :true +1 :true 如果开头有0,1个或更多的空白,我想要的是相同的逻辑: : true (empty input string) : true (one or more spaces) -: false -1: true +1: true 235: true 这里我匹配的是数字,但在更一般的方

我有以下正则表达式

^(\s)*[+-]?\d+$
如果输入在第一个非空格字符之前包含多个空格,则失败。 目前,它正在研究下一个示例

- :false
-1 :true
+1 :true
如果开头有0,1个或更多的空白,我想要的是相同的逻辑:

: true (empty input string)
    : true (one or more spaces)
  -: false
  -1: true
   +1: true
   235: true 
这里我匹配的是数字,但在更一般的方案中,如果有十进制数,在一些特殊的单词上,我希望有相同的行为。
因此,基本上,如果开头或空字符串中有任意数量的空格,后跟我想要匹配的内容(数字、电子邮件、特殊单词…),我希望正则表达式匹配我的正则表达式。我想您希望星号与\s匹配:

^\s*[-+]?\d+$

您需要使用可选分组构造使整个模式可选,并将
\s*
放在组之前:

^\s*(?:[+-]?\d+)?$
    ^^^        ^^

详细信息

  • ^
    -字符串的开头
  • \s*
    -0+空格
  • (?:
    -启动非捕获组(如果引擎不支持非捕获组,请删除
    ?:
    )匹配。。。。
    • [+-]?
      -可选(1或0次)
      +
      -
      符号
    • \d+
      -1+位
  • )?
    -。。。。1或0次
  • $
    -字符串结束

为什么要将空白分组?只需使用
\s*
如果只输入一个空格,它将不起作用,计算结果为false。如果用户留下空字符串或输入1个或多个空格,则应将其求值为true。语义是相同的,用户并没有提供任何输入数据,所有前导空格都应该被忽略或作为true@Error:您没有提供该测试用例。我把它添加到了演示中。请参阅更新的答案。如果还希望允许尾随空格,请在
\d+
之后添加
\s*
。空字符串的计算结果为false,任何数量的空格也计算结果为false。