我正在使用以下正则表达式:
^[0-9.,]*(([.,][-])|([.,][0-9]{2}))?\$
我使用此正则表达式检查有效价格 - 因此它会捕获/拒绝xxx
或llddd
或34.23dsds
等内容
并允许100
或120.00
之类的内容
它的问题似乎是它是空白的(空的)它传递的有效它不应该 - 任何想法如何改变这个?
由于
答案 0 :(得分:1)
采取yoiur正则表达式并且只是解决不匹配空白"问题:
^[0-9.,]+(([.,][-])|([.,][0-9]{2}))?$
*
允许0或更多,而+
允许1或更多,因此*
允许空白但+
不允许,而是必须在至少一位数。
编辑:
你应该清理这个正则表达式
^[0-9]+(?:[.,-](?:[0-9]{2})?)?$
这解决了" ,,,"
的匹配问题http://www.regextester.com/?fam=95185
编辑2:@Fuzzzzel指出这不符合案例" 50, - "我们假设您想要匹配,并且删除捕获组是推定的。这是我建议的正则表达式的最新版本:
^[0-9]+([.,-](-|([0-9]{2}))?)?$
答案 1 :(得分:1)
你的一个问题是你在正则表达式中使用了代表“任何字符”的点。如果你的意思是一个点,你需要像\.
此外,您应该至少有一个号码,因此请将*
的星号+
换成“一个或多个”。
然后你可以拥有。,。,。,。,。,。, - 如果你不从第一部分删除逗号和点:
^[0-9]+(([\.,][-])|([\.,][0-9]{2}))?$