用逗号和句点验证正数
我需要一个正则表达式验证表达式
允许
,
和.
不允许
.
并且,
例如,在我的asp.net文本框中,如果我键入anything@!#--
,则正则表达式验证将禁止它,如果我输入10.000,50
或10,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