我只想让数字和特殊的字符像''一样。和','允许在我的文本字符串中。为此,我尝试了以下代码
var pattern = /[A-Za-z]/g;
var nospecial=/[\(#\$\%_+~=*!|\":<>[\]{}`\\)';@&?$]/g;
if (!ev.ctrlKey && charCode!=9 && charCode!=8 && charCode!=36 && charCode!=37 && charCode!=38 && (charCode!=39 || (charCode==39 && text=="'")) && charCode!=40) {
console.log(text);
if (!pattern.test(text) && !nospecial.test(text)) {
console.log('if');
return true;
} else {
console.log('else');
return false;
}
}
但没有获得所需的输出。告诉我我错在哪里。
答案 0 :(得分:21)
忘记尝试黑名单,只需这样做就可以得到你想要的东西:
var pattern = /^[0-9.,]*$/;
编辑:此外,而不仅仅是检查数字,逗号和点。我假设这样的事情比你希望的更多:
var pattern = /^(0|[1-9][0-9]{0,2}(?:(,[0-9]{3})*|[0-9]*))(\.[0-9]+){0,1}$/;
答案 1 :(得分:5)
那你为什么不尝试/^[0-9,.]*$/
而不是否定测试?
答案 2 :(得分:1)
你可以试试这个:
/([0-9]+[.,]*)+/
它将与昏迷或点数相匹配。
答案 3 :(得分:0)
答案 4 :(得分:0)
您也可以使用this answer中的解决方案:
parseFloat(text.replace(',',''));