正则表达式分离整数和实数

时间:2017-10-25 11:39:49

标签: regex

我想写一个关于匹配整数和实数的正则表达式(它们用点分隔,例如:123.123)在一个字符串中,用逗号分隔“,”

我写了这个,但不能用逗号分隔它们:^[-+]?[0-9]*\.?[0-9]+?$

234匹配
345,2.78匹配
5.443,214.0匹配
4.5,12,0.8匹配
1,1.0,3,4.8,0.0,0,7.001,8.0匹配

2,5不匹配
3 4,5无匹配
4.0,没有匹配
6F无匹配
04没有比赛
5.00无匹配
4-1无匹配
11,4.5无匹配
4.不匹配
.9没有匹配
1.22.34不匹配

2 个答案:

答案 0 :(得分:0)

(?<=,|^)[-+]?[0-9]+\.?[0-9]*(?=,|$)

应该有用。

正则表达式中的

^$表示:字符串的开头和结尾。因此,只有当您的字符串只包含一个数字时才会得到匹配。

(?<=,|^)(?=,|$)是positiv lookbehind和positiv lookahead,意思是:只逗号之间或字符串的开头或结尾处完全匹配。

答案 1 :(得分:0)

^(?:[1-9]\d*|0)(?:\.\d+(?<!0)|\.0)?(?:\,(?:[1-9]\d*|0)(?:\.\d+(?<!0)|\.0)?)*$

Demo