连续两次不重复相同字符的正则表达式

时间:2020-09-13 22:16:32

标签: regex

我需要做一个正则表达式来验证它只接受数字,点(。)可选,1个逗号(,)可选的数量,并且在逗号后我至少还有2个数字,这是我走得最远的数字来是这个

^(([0-9]{0,})+([.]?))+([,]{0,1}?)([0-9]{1,}?)+$

这很好用,问题是它允许我输入句点(。)例如不止一次(100 ... 000),可以接受,但是我只需要接受一个句点( 。)一次,我该如何解决?

我需要正则表达式进行如下验证

100 VALID
100.000,00 VALID

100. INVALID
100..00 INVALID
100, INVALID
100..000,00 INVALID

1 个答案:

答案 0 :(得分:2)

为防止同一字符(在这种情况下为圆点)连续出现,请使用锚定的负向前视作为输入的起点:

DECLARE
   the_variable date;
BEGIN
   SELECT MIN(Start_Date) INTO the_variable FROM Employee_Master;
END;
/

在您的情况下:

^(?!.*[.][.])<rest of regex>

有关问题的测试用例,请参见live demo


我不清楚您实际上想匹配什么,但是我不需要理解这一点即可回答您的问题,即如何防止同一字符连续出现。