2014-12-02 120 views
1

我发现的东西,应该回答我的问题:正则表达式不应该匹配空或空白

Regular Expression Validation error does not show up on entering a whitespace

然而,答案并没有为我工作。我试图找到非零,正数或负数的整数。我用:

^-?[1-9][0-9]* 

它工作正常,除了空或空白。我试过了:

^-?[1-9][0-9]*\ {0,0}$ 

这没有奏效。有任何想法吗?

+0

我试过这样:^ [+ - ] [1-9] [0- 9] * $ 这没有奏效。前面(或后面,我认为这是)测试似乎测试数字0不是一个数字。这似乎并没有解决我的问题。我想知道,这可能是因为这是asp.net RegularExpressionValidation控件的一部分吗? – 2014-12-02 15:48:28

+0

我尝试了一种替代方法。我把两个验证服务器控件放在文本框中。 RequiredFieldValidator和RegularExpressionValidator,两者都使用Display = Dynamic。这里的问题是只有第一个显示。如果我先将RequiredField放入,它会在适当时显示错误消息。但RegEx从不显示。反之亦然。现在,我不知道我该走哪条路。是否可能RegularExpressionValidators从不测试null,即使你说,所以RequiredFieldValidator有一个目的?听起来比计算机科学更哲学... – 2014-12-02 15:58:57

+0

我试过了最基本的正则表达式,我可以想象检查以确保没有空白或空:^ \ S + $这从来没有工作。我开始认为RegularExpressionValidator不会让我检查空格或空值。这是该死的怪异。 – 2014-12-02 16:17:11

回答

1
^[+-]?(?!0$)\d+$ 

您可以试试这个。 ?!为负先行测试如果字符串不为0

http://regex101.com/r/yR3mM3/18

+0

经过一个更多的编辑你的答案将成为我的相同:) – anubhava 2014-12-02 15:32:18

+0

@anubhava没有它不会。只是没有读取整数和其他stuff.this采用消极lookahead在哪里作为你的不。 – vks 2014-12-02 15:35:43

1

使用使用锚$这里:

^[+-]?[1-9][0-9]*$ 

即:

  • ^ - 行启动
  • [+-]? - 可选+-
  • [1-9] - 数介于1至9
  • [0-9]* - 0以上digist
  • $ - 输入