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

Gar*_*rry 3 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但没有得到所需的输出.告诉我哪里错了.

Dal*_*las 21

忘记尝试黑名单,只需这样做以允许你想要的东西:

var pattern = /^[0-9.,]*$/;
Run Code Online (Sandbox Code Playgroud)

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

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

演示

在此输入图像描述

  • @Garry,你的意思是什么更高效?你对此有什么问题? (2认同)

Dio*_*o F 5

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