Javascript 货币/百分比正则表达式

Javascript 货币/百分比正则表达式,javascript,regex,currency,Javascript,Regex,Currency,我必须匹配像这样的值 € 6.483,00 或者像这样的价值观 18,50% 或者,再一次 +65,86 % 在Javascript函数中,我将其起草为: function(s) { return /^[0-9]?[0-9,\.]*$/.test(s); } 但是,很明显,它不起作用。。。应该如何改变 ^(?:€|\+)?\s*\d+(?:\.?\d{3})*(?:,\d+)?\s*%?\s*$ 看到了吗 字符串的开头,一个可选的欧元或+,然后是可选的空格,然后列表中应该有一位

我必须匹配像这样的值

€ 6.483,00
或者像这样的价值观

18,50%  
或者,再一次

+65,86 %
在Javascript函数中,我将其起草为:

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

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

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

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));
}

如果有不匹配/不应该匹配的案例,请让我知道。

阅读nice,但。。。这不是一个答案,替换上面函数中的/-\$?\d+\.\d{3}*\,\d{1,}?\\,\d{1,}?/g仍然不能得到我的工作!