正则表达式只允许数字或空字符串

时间:2010-07-14 17:44:52

标签: regex

有人可以帮我创建这个正则表达式。我需要它来检查字符串是完全空白(空)还是只包含正整数。如果还有其他任何失败。这是我到目前为止所做的。

/^\s*|[0-9][0-9]*/

6 个答案:

答案 0 :(得分:44)

您正在寻找:

/^(\s*|\d+)$/

如果您想要一个没有前导零的正数,请使用[1-9][0-9]*

如果您不关心周围的空格,您还可以尝试:

/^\s*\d*\s*$/

请注意,您不希望允许部分匹配,例如 123 abc,因此您需要开始和结束锚点:^...$
你的正则表达式有一个常见的错误:^\s*|\d+$,例如,不强制执行整个匹配,就像(^\s*)|(\d+$),读取,开头的空格或结尾的数字一样。

答案 1 :(得分:5)

要匹配数字或空字符串'',即用户尚未输入任何输入,请执行此操作

(^[0-9]+$|^$)

匹配数字,空字符串或空格字符

(^[0-9]+$|^$|^\s$)

regex101

上测试

答案 2 :(得分:3)

Kobi有一个很好的答案,但从技术上讲你不必捕捉它(除非你要做输出的事情)

/^[\s\d]+$/

或者如果你不在乎字符串是否完全为空(即“”)

/^[\s\d]*$/

澄清我理解原始问题意味着字符串中的空格应该被忽略。

答案 3 :(得分:1)

你可以试试 -

/^\d*$/

与空格匹配 -

/^[\s\d\s]*$/

答案 4 :(得分:1)

^\d+([\.\,][0]{2})?$

我发现这对我有用。允许任何整数,但只有小数.00

  • 999 90
  • 100
  • 100.00
  • 101.00
  • 1000.00

失败

  • 101.01
  • 1000.99

http://regexpal.com/

尝试

答案 5 :(得分:0)

这帮助了我。它匹配空字符串和您输入的任何数字。

/^(|\d)+$/

如果需要,请在这里尝试:regex101.com