带有可选逗号和有效数字的有效数字的正则表达式点

时间:2013-04-17 12:34:56

标签: javascript regex string validation

我只想让数字和特殊的字符像''一样。和','允许在我的文本字符串中。为此,我尝试了以下代码

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

但没有获得所需的输出。告诉我我错在哪里。

5 个答案:

答案 0 :(得分:21)

忘记尝试黑名单,只需这样做就可以得到你想要的东西:

var pattern = /^[0-9.,]*$/;

编辑:此外,而不仅仅是检查数字,逗号和点。我假设这样的事情比你希望的更多:

var pattern = /^(0|[1-9][0-9]{0,2}(?:(,[0-9]{3})*|[0-9]*))(\.[0-9]+){0,1}$/;

Demo

enter image description here

答案 1 :(得分:5)

那你为什么不尝试/^[0-9,.]*$/而不是否定测试?

答案 2 :(得分:1)

你可以试试这个:

/([0-9]+[.,]*)+/

它将与昏迷或点数相匹配。

答案 3 :(得分:0)

^(?!.*[^0-9.,\n]).*$

不确定你的意思是高效但是这会失败得更快但是需要很长时间来匹配正确的字符串。参见演示。

http://regex101.com/r/aK2zV7/1

答案 4 :(得分:0)

您也可以使用this answer中的解决方案:

parseFloat(text.replace(',',''));