首页 > 试题广场 >

判断是否符合指定格式

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

输入

'800-555-1212'

输出

true
推荐
本题需要注意格式,开头^和结尾$必须加上来限定字符串,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 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)
function matchesPattern(str) {
    const result = /\b\d{3}-\d{3}-\d{4}\b/g.test(str)
    return result
}

发表于 2022-08-10 17:53:54 回复(0)
function matchesPattern(str) {
    let arr = str.split('-')
    for (let i = 0; i < arr.length; i++) {
        if (i != 2) {
            if (isNaN(arr[i]) || arr[i].length != 3) {
                return false
            }
        } else {
            if (isNaN(arr[i]) || arr[i].length != 4) {
                return false
            }
        }
    }
    return true
}
不想用正则
发表于 2022-07-29 20:12:38 回复(0)
function matchesPattern(str) {
    const reg = /^\d{3}-\d{3}-\d{4}$/g;
    return reg.test(str);
}

发表于 2022-07-24 12:45:08 回复(0)
function matchesPattern(str) {
    return /^\d{3}-\d{3}-\d{4}$/.test(str)
}
发表于 2022-07-15 16:43:37 回复(0)
function matchesPattern(str) {
    var reg = /^(\d){3}-(\d){3}-(\d){4}$/;
    return reg.test(str)
}

发表于 2022-06-06 19:56:59 回复(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-02-16 10:52:23 回复(0)
function matchesPattern(str) {
    return /^\d{3}-\d{3}-\d{4}$/.test(str);
}

发表于 2022-01-07 14:44:06 回复(1)
为什么有 (’33-444-5555‘)的测试用例

发表于 2021-09-24 08:34:33 回复(0)
function matchesPattern(str) {
    const arr = str.split('-');
    const result = [];
    arr.forEach(item => {
        item.split('').forEach(n => {
            n = n * 1;
            if (Object.is(n, NaN)) return result.push(false); // 非数字字符串*1会变NaN这里拦一下
            result.push(typeof n === 'number');
        })
    })
    if (arr[0].length === 3 && arr[1].length === 3 && arr[2].length === 4) {
        result.push(true);
    }else{
        result.push(false);
    }
    return result.every(item => item === true);
}  

忘了可以用正则了, 麻了, 就硬着头皮写
发表于 2021-09-18 22:51:10 回复(0)
function matchesPattern(str) {
    var reg = /^\d{3}-\d{3}-\d{4}$/;
    return reg.test(str)
}


发表于 2021-09-02 16:57:17 回复(0)
function matchesPattern(str) {
    var reg=/^\d{3}([-]\d{3})([-]\d{4})$/;
    return reg.test(str);
}

发表于 2021-08-19 22:54:07 回复(0)
function matchesPattern(str) {
    return /^(\d{3}-){2}\d{4}$/.test(str)
}

发表于 2021-08-17 12:00:45 回复(0)
function matchesPattern(str) {
   let result = /(^\d{3})-(\d{3})-(\d{4}$)/;
   return result.test(str);
}
test() 方法用于检测一个字符串是否匹配某个模式.

发表于 2021-08-10 19:07:29 回复(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)