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+)?$
^^^ ^^
见
详细信息:
-字符串的开头^
-0+空格\s*
-启动非捕获组(如果引擎不支持非捕获组,请删除(?:
)匹配。。。。?:
-可选(1或0次)[+-]?
或+
符号-
-1+位\d+
-。。。。1或0次)?
-字符串结束$
\s*
如果只输入一个空格,它将不起作用,计算结果为false。如果用户留下空字符串或输入1个或多个空格,则应将其求值为true。语义是相同的,用户并没有提供任何输入数据,所有前导空格都应该被忽略或作为true@Error:您没有提供该测试用例。我把它添加到了演示中。请参阅更新的答案。如果还希望允许尾随空格,请在\d+
之后添加\s*
。空字符串的计算结果为false,任何数量的空格也计算结果为false。