正则表达式以验证它是否不是十进制数或整数

时间:2019-03-24 05:59:44

标签: c# regex

我试图找到一个正则表达式,以找出未在输入框中输入为正确十进制或整数的数字

示例

  1. 1 ..-捕获//连续的重复点
  2. ABC-捕获//所有字母
  3. 1.1.1-捕获//以数字重复的点
  4. !,@,#-捕获//所有特殊字符

下面的当前内容使我可以捕获除示例-3之外的所有示例,其中示例-3可以任意组合重复小数点。

void T1_HTextChanged(object sender, EventArgs e)        
{
    if (System.Text.RegularExpressions.Regex.IsMatch(T1_H.Text, "[^0-9.-]+|[.]{2}"))            
    {

        MessageBox.Show("Please enter only numbers.");
        T1_H.Text="";
    }
}

3 个答案:

答案 0 :(得分:1)

如果您确实要使用正则表达式,则可以使用:^[0-9]+(\.[0-9]+)?$

您可以在https://regex101.com/r/UB6eRT/1

进行测试

如果您想知道它是否为有效数字,也可以尝试将其转换并检查是否出现错误。

答案 1 :(得分:1)

尝试此正则表达式:

^[0-9]+([.][0-9]{1,2})?$

说明

  • ^声明行首的位置
  • 匹配[0-9] +
  • 下面列表中的单个字符
  • + 量词-匹配一次和无限次,并尽可能多地匹配, 根据需要回馈(贪婪) 0-9一个字符,介于0(索引48)和9(索引57)(区分大小写)之间
  • 第一个捕获组([。] [0-9] {1,2})?
  • 量词-匹配零到一遍,尽可能多地匹配,并根据需要返回(贪婪)
  • 匹配[。]下列表中存在的单个字符 。匹配字符。从字面上看(区分大小写)
  • 匹配[0-9] {1,2}下面列表中的单个字符 {1,2}量词-匹配1至2次,尽可能多地匹配,并根据需要返回(贪婪)
  • 0-9单个字符,介于0(索引48)和9(索引57)(区分大小写)之间
  • $在行尾声明位置

工作示例:https://regex101.com/r/iRaRPX/1/

它将检查所有整数和十进制数,最多两个小数点。您可以根据需要进行更改。

答案 2 :(得分:0)

如果要使用正则表达式实现此目的,则可以使用。

^(\d*\.)?\d+$

Demo

但是请注意,您也可以使用Decimal.TryParse。您可以在Decimal.TryParse here

上阅读更多内容。