Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Java脚本输入格式验证_Javascript_Regex - Fatal编程技术网

Javascript Java脚本输入格式验证

Javascript Java脚本输入格式验证,javascript,regex,Javascript,Regex,我想验证其中一个输入字段的以下格式 1111-111-111 //4digits- 3digits- 3digits 我尝试了下面的方法,但不起作用。你知道我错了什么吗 function(value) { var patt = "/^\d{4}-d{3}-d{3}$/"; var res = value.match(patt); if (!res) { return { status: 2, message

我想验证其中一个输入字段的以下格式

1111-111-111 //4digits- 3digits- 3digits
我尝试了下面的方法,但不起作用。你知道我错了什么吗

function(value) {
    var patt = "/^\d{4}-d{3}-d{3}$/";
    var res = value.match(patt);
    if (!res) {
        return {
            status: 2,
            message: 'Input should be formatted as 0000-000-000'
        };
    } else {
        return {
            status: 0
        };
    }
}
另外,给定一个字符串,我想强制某些索引处的字符为空。 例如:总共23个字符,其中第2、第9、第11和13-21个是空格字符。
我不熟悉Javascript正则表达式,我们如何执行这些规则?

您的正则表达式是错误的。修复它:

/^\d{4}-\d{3}-\d{3}$/
您的第二部分和第三部分是“d”字符,而不是数字。 并在声明正则表达式时删除
字符

var patt = /^\d{4}-\d{3}-\d{3}$/;

如果我们只希望传递4-3-3位数字,我们可以简单地使用:

^[0-9]{4}-[0-9]{3}-[0-9]{3}$
或:

如果我们还希望捕获电话号码,我们将添加一个捕获组:

^([0-9]{4}-[0-9]{3}-[0-9]{3})$
const regex=/^[0-9]{4}-[0-9]{3}-[0-9]{3}$/gm;
常量str=`1111-111-111
1111-111-1111
8888-888-888`;
让m;
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
//可以通过'm`-变量访问结果。
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});

}
第一个模式不能像预期的那样工作,因为要匹配一个数字,您必须转义d,比如
\d
或者
d{3}
将匹配一个
d
字符的3倍,并且模式不应该在双引号之间,而应该在
/
之间

let test=函数(值){
var patt=/^\d{4}-\d{3}-\d{3}$/;
var res=值匹配(patt);
如果(!res){
返回{
现状:2,
消息:“输入应格式化为0000-000-000”
};
}否则{
返回{
状态:0
};
}
};

console.log(test(“1111-111-111”);
但是
res
是空的。为什么会这样?@Programmerzzz,在定义正则表达式时尝试使用
patt.test(value)
删除
字符
^([0-9]{4}-[0-9]{3}-[0-9]{3})$