货币/百分比正则表达式

时间:2011-09-12 08:30:43

标签: javascript regex currency

我必须匹配像

这样的值
€ 6.483,00

OR值,如

18,50%  

或者,再次,

+65,86 %

在Javascript函数中,我起草为:

function(s) {
  return /^[0-9]?[0-9,\.]*$/.test(s);
}
但是,显然,它不起作用......应该如何改变?

2 个答案:

答案 0 :(得分:3)

^(?:€|\+)?\s*\d+(?:\.?\d{3})*(?:,\d+)?\s*%?\s*$

here on Regexr

字符串的开头,可选的€或+,然后是可选的空格,然后应该在列表中有一个数字,后跟一个可选的点和三个数字,然后是可选的分数,可选的空格,可选的%更多可选的空格和然后是字符串的结尾,

答案 1 :(得分:2)

var sample = [
    "€ 6.483,00",
    "18,50%",
    "+65,86 %"
]
for(var i = 0; i < sample.length; i++) {
    var input = sample[i];
    var regex = /^(\u20ac ?)?\+?\d+(\.\d+)?(\,\d+)?( ?%)?$/
    console.log(input + "\t" + regex.test(input));
}

如果有不符合/不符合的情况,请告诉我。