【问题标题】:Regex test for NUMBERSNUMBERS 的正则表达式测试
【发布时间】:2010-06-22 12:39:07
【问题描述】:

我找到了一个 Regex 来测试传递给 TextBox 的文本是否是电子邮件。

If Regex.IsMatch(email.Text, "^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))" +  "(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$") _
Then
// True
End If

我想改变这个,所以它会测试输入的文本是否只是Numbers

我该怎么做?

【问题讨论】:

  • 只测试整数的正则表达式是“^[0-9]+$”。也许我误解了您的问题,但是仅测试数字与测试电子邮件地址有什么关系?
  • 不,你不是。我找到了这个解决方案,但我还没有理解它。
  • ^ = 第 1 行的开始。 [0-9] = 一系列字符,在本例中为数字,从零到九。 + = 至少匹配 1 个,但可能不止一个。 $ = 行尾。因此,正则表达式 ^[0-9]+$ 将匹配包含至少一个数字的任何整行文本,但不允许任何非数字字符。

标签: .net vb.net regex


【解决方案1】:

如果您想确保文本仅包含数字,请使用简单的 ^\d+$^\s*\d+\s*$ 以在开头和结尾留出一些空格。

允许负数:^-?\d+$^[+-]?\d+$ 允许像 +12 这样的数字

对于十进制数:^[+-]?\d+(\.\d+)?$(这将允许0.54,但不允许.54

这将允许.54 之类的东西

^[+-]?(\d+(\.\d+)?|\.\d+)$

【讨论】:

    【解决方案2】:

    您可以查看 this answer 以了解使用正则表达式解析数字的明确处理方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-30
      • 2022-06-15
      • 2015-08-30
      • 1970-01-01
      相关资源
      最近更新 更多