我需要一个
的正则表达式验证表达式允许
,
和.
DISALLOW
.
和,
例如,在我的asp.net文本框中,如果我键入anything@!#--
,正则表达式验证将禁止它,如果我键入10.000,50
或10,000.50
它应该被允许。< / p>
我一直试图使用这个正则表达式:
^\d+(\.\d\d)?$
但我的文本框也必须允许,
符号,我尝试仅使用整数正则表达式验证,如果我输入字符串,它确实不允许,但它也禁止.
和,
符号应该允许数字(0-9)以及.
和,
符号
答案 0 :(得分:4)
请勿使用\d
与[0-9]
中的.NET
匹配
首先,在.NET中,\d
将匹配任何脚本中的任何数字,例如:
654۳۲١८৮੪૯୫୬१७੩௮௫౫೮൬൪๘໒໕២៧៦᠖
所以你真的想要使用[0-9]
不完整的规格
你说你只想允许&#34;数字,逗号和句号&#34;但我不认为这是整个规范。那将是^[0-9,.]+$
,那将匹配
...,,,
调整规格
很难猜出你真正想要允许的内容:10,1,1,1
会被接受吗?
我们可以从这样的事情开始,以获得一些结构良好的字符串:
^(?:[0-9]+(?:[.,][0-9]+)?|[1-9][0-9]{0,2}(?:(?:\.[0-9]{3})*|(?:,[0-9]{3})*)(?:\.[0-9]+)?)$
使用the demo进行游戏,了解应该和不应该匹配的内容...当您确定最终规范时,我们可以调整正则表达式。
样本匹配:
0
12
12.123
12,12
12,123,123
12,123,123.12456
12.125.457.22
示例不匹配:
12,
123.
1,1,1,1
答案 1 :(得分:2)
答案 2 :(得分:1)
也许你可以使用这个(以数字开头,以数字结尾):
(\d+[\,\.])*\d+
如果您需要更复杂的价格Regex,您应该使用:
(?:(?:[1-9]\d?\d?([ \,\.]?\d{3})*)|0)(?:[\.\,]\d+)?
编辑:为了使其更可靠(并且不要获得00.50),您可以添加开始和结束符号检查:
(^|\s)(?:(?:[1-9]\d?\d?([ \,\.]?\d{3})*)|0)(?:[\.\,]\d+)($|\s)?
答案 3 :(得分:0)
您的格式有点奇怪,因为它不是标准格式。 我的第一个想法是放置一个浮点而不是一个字符串,并放置一个Range验证属性以避免负数。 但由于格式化,不确定它会起作用。 当然,另一种方式是正则表达式。 你建议的那个意思是: “有些数字可能是一个由一个点和两个数字形成的组”。 这不是你所期待的。
严格适合一个低于100,000.99的数字的例子,一个正则表达式可能是:
^[0-9]{1-2}[\.,][0-9]{3}([\.,][0-9]{1-2})?$
接受所有正数的更全局的正则表达式是Avinash Raj发布的正则数:(?:\d|[,\.])+
答案 4 :(得分:0)
我认为对你的病情最好的正则表达式是:
^[\d]+(?:,\d+)*(?:\.\d+)?$
这将验证您喜欢的任何内容
同时:
不验证:
在此处查看演示:http://regex101.com/r/zI0mJ4