繁体   English   中英

正则表达式以验证它是否不是小数或整数

[英]Regular Expression to Validate if it is not a Decimal or Integer Number

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

例子

  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="";
    }
}

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

您可以在这里进行测试https://regex101.com/r/UB6eRT/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/

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

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

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

演示版

但是请注意,您也可以使用Decimal.TryParse 你可以阅读更多关于Decimal.TryParse 这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM