用逗号和句点验证正数

我需要一个正则表达式验证表达式

允许

  • 正数(0-9)
  • ,.
  • 不允许

  • 字母(AZ)
  • 任何其他字母或符号除外. 并且,
  • 例如,在我的asp.net文本框中,如果我键入anything@!#-- ,则正则表达式验证将禁止它,如果我输入10.000,5010,000.50则应该允许。

    我一直在尝试使用这个正则表达式:

    ^d+(.dd)?$
    

    但我的文本框也必须允许,符号,我试着只使用整数正则表达式验证,它确实不允许如果我键入字符串,但它也不允许.,符号,而它应该允许数字(0-9),也.,符号


    你的正则表达式是,

    (?:d|[,.])+
    

    要么

    ^(?:d|[,.])+$
    

    它匹配一个或多个数字,或者. 一次或多次。

    DEMO


    不要使用d来匹配.NET中的[0-9]

    首先,在.NET中, d将匹配任何脚本中的任何数字,例如:

    654۳۲١८৮੪૯୫୬१७੩௮௫౫೮൬൪๘໒໕២៧៦᠖
    

    所以你真的想要使用[0-9]

    不完整的规格

    你说你只想让“数字,逗号和句点”,但我不认为这是整个规范。 那将是^[0-9,.]+$ ,而且会匹配

    ...,,,
    

    看演示。

    调整规格

    很难猜出你真正想要的: 10,1,1,1可以接受吗?

    我们可以从这样的事情开始,得到一些格式良好的字符串:

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

    玩演示,看看什么应该和不应该匹配......当你确定最终规范时,我们可以调整正则表达式。

    示例匹配:

    0
    12
    12.123
    12,12
    12,123,123
    12,123,123.12456
    12.125.457.22
    

    非匹配样本:

    12,
    123.
    1,1,1,1
    

    也许你可以使用这个(以数字开头,以数字结尾):

    (d+[,.])*d+
    

    如果你需要更复杂的价格正则表达式,你应该使用:

    (?:(?:[1-9]d?d?([ ,.]?d{3})*)|0)(?:[.,]d+)?
    

    编辑:为了使它更可靠(并没有得到00.50),你可以添加开始和结束符号检查:

    (^|s)(?:(?:[1-9]d?d?([ ,.]?d{3})*)|0)(?:[.,]d+)($|s)?
    
    链接地址: http://www.djcxy.com/p/86997.html

    上一篇: Validating Positive number with comma and period

    下一篇: Check regex for letters numbers and underscore characters