带点和逗号的正则表达式数字

时间:2014-04-29 05:07:55

标签: regex

我需要一个正则表达式,以相同的方式处理带点和逗号的数字。逗号不应被视为千分隔符。

例:
9.8
9,8

应该返回9.8

我尝试了这个,但它不起作用。

^(\d+(?:[\.\,]\d{2})?|)$ 

3 个答案:

答案 0 :(得分:1)

你的正则表达式^(\d+(?:[\.\,]\d{2})?|)$匹配正好有2位小数的数字,如果你想匹配任何数字(1或更多)小数,请使用:

^(?:\d+(?:[.,]\d+)?|)$ 

答案 1 :(得分:0)

试试这个:

^(\d*[.,]?\d*)*$

演示:http://regex101.com/r/bE4iS3

答案 2 :(得分:0)

<强> PHP

$re = '/(,)/mx'; 
$str = '9.8 \n9,8'; 
$subst = '.'; 
preg_replace($re, $subst, $str);

<强> JAVASCRIPT

var re = /(,)/gmx; 
var str = '9.8 \n9,8';
var subst = '.'; 
str.replace(re, subst);

<强> PYTHON

import re
p = re.compile(r'(,)', re.MULTILINE | re.VERBOSE)
str = "9.8 \n9,8"
subst = "." 
re.sub(p, subst, str)