首页 > 试题广场 >

判断是否符合指定格式

[编程题]判断是否符合指定格式
  • 热度指数:36817 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定字符串 str,检查其是否符合如下格式
1、XXX-XXX-XXXX
2、其中 X 为 Number 类型
示例1

输入

'800-555-1212'

输出

true
function matchesPattern(str) {
	return /^\d{3}-\d{3}-\d{4}$/.test(str);
}

发表于 2015-07-14 11:00:20 回复(0)
更多回答
推荐
本题需要注意格式,开头^和结尾$必须加上来限定字符串,3个数可表示为\d{3},4个数则为\d{4},{n}表示前面内容出现的次数。正则表达式可写作/^\d{3}-\d{3}-\d{4}$/,有相同部分\d{3}-,因此也可写作/^(\d{3}-){2}\d{4}$/

function matchesPattern(str) {
    return/^(\d{3}-){2}\d{4}$/.test(str);
}
编辑于 2015-08-18 20:54:22 回复(9)
function matchesPattern(str) {
    var reg = /^\d{3}-\d{3}-\d{4}$/;
    //^表示匹配输入字符串的开始位置,$表示匹配输入字符串的结束位置
    //不加的话会通过如下字符串:"a800-555-1212b"
    return reg.test(str);
}
发表于 2017-03-23 22:23:31 回复(0)
两种方法: 1. 适合不会正则的新手, 2. 适合正则的新手

1. 非正则方法,利用split()方法和isNaN()方法
function matchesPattern(str) {
   let arr = str.split('-')
   if(isNaN(arr[0]) || isNaN(arr[1]) || isNaN(arr[2])) return false
   return arr[0].length === arr[1].length && arr[2].length === 4
}

2. 正则就运用^开头符 和$结尾符 
function matchesPattern(str) {
   return str.match(/^(\d{3}-){2}\d{4}$/) ? true : false
}



发表于 2021-07-18 22:51:13 回复(3)
function matchesPattern(str) {
    return str == str.match(/\d{3}-\d{3}-\d{4}/)?true:false;
}

编辑于 2020-03-26 15:27:10 回复(0)
function matchesPattern(str) {
    return /^\d{3}-\d{3}-\d{4}$/.test(str)
}
  • 注意必须加上^$
发表于 2018-12-01 11:32:55 回复(0)
function matchesPattern(str) {
    return !!str.match(/^\d{3}\-\d{3}\-\d{4}$/);
}

发表于 2018-10-10 18:25:43 回复(0)
function matchesPattern(str) {
    var num=/^(\d{3}-){2}(\d){4}$/;
    return num.test(str);
}
完全匹配
发表于 2017-08-27 16:38:13 回复(0)
function matchesPattern(str) {
    return /^\d{3}-\d{3}-\d{4}$/.test(str);
}

发表于 2017-04-20 08:21:59 回复(0)
开头和结尾记得加上^和$
function matchesPattern(str) {
	return /^\d{3}-\d{3}-\d{4}$/.test(str);
}

发表于 2017-03-17 20:45:17 回复(2)
通不过求大神指教
function matchesPattern(str) {
   if(str.match(/^\d{3}\-\d{3}\-\d{4}$/)[0] === str) return  true;
}
发表于 2016-04-08 14:52:31 回复(3)
发表于 2015-12-09 19:34:45 回复(0)
function matchesPattern(str) {
    return (/^\d{3}\-\d{3}\-\d{4}$/).test(str);
}
一次通过,开心
发表于 2017-02-17 19:16:31 回复(0)
    function matchesPattern(str) {
        var x = function () {
            if (str.length != 12) return false;
            if (str[3] == "-" && str[7] == "-") {
                for (i = 0; i < str.length; i++) {
                    switch (i) {
                        case 3:
                            continue;
                        case 7:
                            continue;
                        default:
                            if (/\d/.test(str[i]) == false) {
                                return false;
                            }
                    }
                }
                return true;
            }
            return false;
        }
        return x(str) ? true:false;
    }
新手,是真的新,不太会正则,就硬是不用正则写了个,看这里没有,厚着脸皮发出来了……
发表于 2017-05-04 20:13:38 回复(6)
/*[思路]
    首先:(\d{3}-) 重复了两次,所以是(\d{3}-){2}。即XXX-XXX-。
    然后:d{4}。即XXXX。
    最后,全局匹配,所以加上开始符^和结束符$。
    */
    function matchesPattern(str) {
        var res=/^(\d{3}\-){2}\d{4}$/;
        return  res.test(str);
    }
    console.log(matchesPattern('800-555-1212'));
发表于 2016-10-16 11:31:53 回复(0)
不会正则,判断条件有点多,首先确定是不是有两个-,再次确定每个长度,最后确定是不是数字类型
        function matchesPattern(str) {
            let arr = str.split('-')
            let flag = false
            if (arr.length === 3 && arr[0].length === 3 &&arr[1].length === 3 && arr[2].length === 4
                && !isNaN(parseInt(arr[0]))&& !isNaN(parseInt(arr[1]))&& !isNaN(parseInt(arr[2]))) {
                flag = true
            }
            return flag
        }

发表于 2022-04-21 14:12:18 回复(0)
function matchesPattern(str) {
    return /^\d{3}-\d{3}-\d{4}$/.test(str);
}

发表于 2022-01-07 14:44:06 回复(1)
正则表达式的开头和结尾一定要加上^,$,3个数的正则写成\d{3},4个数的正则要写成\d{4},所以按照要求写应该为/^\d{3}-\d{3}-\d{4}/,这种形式进行合并之后为/^(\d{3}-){2}\d{4}/;其中中间的2表示的是两遍的意思。
function matchesPattern(str){
    return /^(\d{3}-){2}\d{4}/g.test(str);
}
发表于 2017-08-14 19:12:55 回复(1)
function matchesPattern(str) {
            return (/^\d{3}-\d{3}-\d{4}$/).test(str)
        }

发表于 2023-09-12 11:38:14 回复(0)
function matchesPattern(str) {
    return /^(\d{3}\-){2}\d{4}$/.test(str);
}

发表于 2023-07-26 15:30:00 回复(0)
function matchesPattern(str) {
    return (/^(\d{3}\-){2}\d{4}$/g).test(str)
}

发表于 2022-12-06 19:52:41 回复(0)
function matchesPattern(str) {
    var arr = str.split('-')
    if(arr.length !=3) return false 
    if(arr[0].length !== 3 || arr[1].length !== 3 || arr[2].length !== 4) return false   
    return !arr.some(item=>isNaN(item*1))
}
发表于 2022-08-19 11:11:36 回复(0)

问题信息

难度:
89条回答 17214浏览

热门推荐

通过挑战的用户

查看代码