C# 带小数点和逗号的数字的C正则表达式

C# 带小数点和逗号的数字的C正则表达式,c#,regex,C#,Regex,我需要在文本框中输入金额,该文本框允许数字带有小数点和逗号。 这个的正则表达式是什么 我使用了下面的 txtInitialAmountGuarDetails.ValidationSettings.RegularExpression.ValidationExpression =@^[-+]?\d*[0-9]|.\d*[0-9]|,\d*[0-9]?$ 但它对30000000000这样的大数字不起作用。我还没有运行它,但您可以尝试一下 var regexp =/^\s*?([\d\,]+(\.\d{

我需要在文本框中输入金额,该文本框允许数字带有小数点和逗号。 这个的正则表达式是什么

我使用了下面的


txtInitialAmountGuarDetails.ValidationSettings.RegularExpression.ValidationExpression =@^[-+]?\d*[0-9]|.\d*[0-9]|,\d*[0-9]?$


但它对30000000000这样的大数字不起作用。

我还没有运行它,但您可以尝试一下

var regexp =/^\s*?([\d\,]+(\.\d{1,2})?|\.\d{1,2})\s*$/;
这是:\d{1,3}、\d{3}*\.{0,1}\d{3}、*\d{0,3}

至于逗号之后的问题,任何选择都可以。如果你用逗号,我的正则表达式就行了。如果使用5位数字,则空格只需将结尾替换为\d{5}\s{1}*\d{0,5}。当然,如果你只是在小数点后不使用任何除沫器,你只需输入\d*

试试这个:

^([0-9]{3}[,.]|)+[0-9]{0,3}$

如果它需要任何增强功能,请告诉我…

逐步增强。给定美国地区,具有以下规则的数字按顺序排列:

字符串的开头是:^ 可选符号:[+-]? 最多3位数字:\d{1,3} 后跟3位数字的逗号,可重复任意次数:?:,\d{3}* 可选小数点和小数部分:?:[.]\d+? 字符串结尾:$ 小数点后的位数有限制吗?然后将最后一个加号更改为{2}表示2位数字

因此,正则表达式是:

@"^[+-]?\d{1,3}(?:,\d{3})*(?:[.]\d+)?$"
或者,如果您想解释您的工作,请使用x选项并:

@"(?x)            # Extended format.
  ^[+-]?          # Optional sign.
  \d{1,3}         # Initial 1-3 digits.
  (?:,\d{3})*     # Any number of commas followed by 3 digits.
  (?:[.]\d+)?$"   # An optional decimal point followed by any number of digits.

但是C已经有依赖于语言环境的验证器了吗?

您也可以试试这个正则表达式:

^([+-]?\d{1,3}(?:,\d{1,3})*(?:\.\d+)*)$
记住。在正则表达式引擎中有一个特定的含义,因此有必要对其进行转义


我还建议您不要在这个任务中使用正则表达式,请看。

问题不是关于javascript:-而是正则表达式您可以使用正则表达式egularexpression.ValidationExpression=@^\s*?[\d\,]+.\d{1,2}?\.\d{1,2}\s*;同样,OP也没有提到前导和尾随\s@DeepakSaralaya,也处理+/-符号。人们通常在小数点后没有逗号。我有时会在五个街区后看到空格。和\d,{3}匹配6,,,,,我想这不是你的本意。@EricJablow哎呀,是的,那是个打字错误。我现在就修。至于小数点后的逗号,我真的不能说是哪种方式,但无论你选择哪种样式,它都应该是一个快速修复方法。不,仍然不起作用。现在999.999.999.999.999起作用了。您需要1或0个小数点。您可以使用此站点快速测试您的正则表达式:我不知道有这样的数字的区域设置识别验证器。您可以使用CultureInfo.NumberFormat.NumberGroupSeparator和其他属性基于区域设置创建正则表达式。India使用逗号分隔的数字对格式化数字,最后是3位序列,然后是小数部分:12,34567.89。NumberGroupSizes将返回{3,2},即第一组有3位,下一组有2位。但是,将所有这些数据转换成正则表达式并不是一项简单的任务,小数点周围的方括号是多余的。它们表示一个“字符组”,表示字符组中的任何字符都可以出现。只有一个字符的字符组可以被字符本身替换。@Scott Munro,我使用[.],因为我更喜欢这样而不是转义元字符。用反斜杠。我不知道该用多少,这取决于我写的语言。在Perl中,我只需要一个。在Java中,我需要两个,正如上面的一位评论员所指出的,对于@string格式,我只需要一个。对于文字句点。但是现在,我用Java编程,Java没有原始字符串;你需要写\\。为了获得正则表达式\..@EricJablow,感谢您分享与Java相关的信息,但是如果您注意到OP已经标记了C,并且AFAIK C支持文字和字符串模式=@^[+-]?\d{1,3}:,\d{1,3}*?:\。\d+*$将毫无问题地编译。如果@被排除在上述代码段之外,那么实际上\\。是必需的。因为OP使用C,所以他不必担心反睫毛炎。但问题是所有被标记为regex的人都感兴趣。我们都可以互相学习,即使是说不,我也不会用那种语言编程。