首页 > 试题广场 > 获取指定字符串
[编程题]获取指定字符串
  • 热度指数:29915 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定字符串 str,检查其是否包含 连续3个数字
1、如果包含,返回最先出现的 3 个数字的字符串
2、如果不包含,返回 false
示例1

输入

'9876543'

输出

987
题目描述有问题,实际考察的是字符串中是否含有连续的三个任意数字,而不是三个连续的数字。依题,若存在连续的三个任意数字,则返回最早出现的三个数字,若不存在,则返回false。因此需要用到match方法,match()返回的是正则表达式匹配的字符串数组,连续的三个任意数字用正则表达式表示为/\d{3}/。
function captureThreeNumbers(str) {
     //声明一个数组保存匹配的字符串结果
  var arr = str.match(/\d{3}/);
     //如果arr存在目标结果,则返回第一个元素,即最早出现的目标结果
     if(arr)
         return arr[0];
     else return false;
 }

编辑于 2015-08-19 10:47:51 回复(12)
"是连续3个数字,不是3个连续的数字!!"上面一大半同学被误导,玛尼中文是体育老师教的
function captureThreeNumbers(str) {
  var reg;
  if(reg = str.match(/(\d{3})/)){
    return reg[0];
  }else{
    return false;
  }
}

编辑于 2015-08-17 07:56:00 回复(15)
function captureThreeNumbers(str) {
    var arr = str.match(/\d{3}/);
    return (arr && arr[0]) || false;
}

发表于 2015-11-24 22:59:25 回复(3)
function captureThreeNumbers(str) {
	return (/\d{3}/.exec(str) || ['false'])[0];
}

发表于 2017-03-17 00:34:07 回复(1)
这题目的描述再加上示例误导性太强
发表于 2015-09-07 12:31:37 回复(1)
这道题真心麻烦..... 我总觉得是连续数字.... 不然岂不是太....
        function captureThreeNumbers(str) {
            var arr = str.split(''),
                len = arr.length,
                count = 0,
                temp = '';
            for (var i = 0; i < len; i++) {
                if (Math.abs(Number(arr[i]) - Number(arr[i + 1])) === 1) {
                    count++;
                    if (count <= 3) {
                        if (i === len - 2 && count == 2) {
                            temp += arr[i] + arr[i + 1];
                            return temp;
                        }
                        temp += arr[i];
                    } else {
                        return temp;
                    }
                } else {
                    temp = '';
                    count = 0;
                }
            }
            return false;
        }
        console.log(captureThreeNumbers('9876543')); //987
        console.log(captureThreeNumbers('1211987')); //987
        console.log(captureThreeNumbers('1223346')); //false
        console.log(captureThreeNumbers('9122334')); //false

编辑于 2017-03-14 22:02:47 回复(2)
function captureThreeNumbers(str) {
    return str.match(/\d{3}/) || false;
}

发表于 2020-03-26 15:17:05 回复(1)
function captureThreeNumbers(str) {
    var s = '';
    for(var i=0;i<str.length;i++){
        if(str[i]>=0&&str[i]<=9){
            s+=str[i];
        }else{
            s='';
        }
        if(s.length==3){
            return s;
        }
    }
    return false;
}
发表于 2016-11-15 09:48:25 回复(0)
function captureThreeNumbers(str) {
    var res = str.match(/\d{3}/g);
    return res? res[0]:false;
}

发表于 2015-10-19 20:06:20 回复(1)
function captureThreeNumbers(str) {
    let nums = /\d{3}/.exec(str);
    return nums ? nums[0] : false;
}

发表于 2021-03-19 21:42:34 回复(0)
function captureThreeNumbers(str) {
    return  /\d{3}/.exec(str) || false
}

发表于 2020-01-11 12:32:35 回复(0)
function captureThreeNumbers(str) {
    return (/\d{3}/).test(str)?str.match(/\d{3}/)[0]:false
}

编辑于 2019-08-09 13:15:02 回复(0)
function captureThreeNumbers(str) {
    //String.prototype.match(reg)返回一个数组
    //当只匹配一次时:
    //数组的第一个元素为匹配的字符串,第2个元素为匹配字符串第一个字符的index,如下——
    //var a = "12aaa345987".match(/\d{3}/);
    // 输出a为["345", index: 5, input: "12aaa345987", groups: undefined]
    //当设定全局匹配时:
    //返回的数组为各个匹配的字符串,且同一位置的字符不重复匹配,如下——
    //var a = "12aaa345987".match(/\d{3}/g);
    //输出a为["345", "987"]
    
    var reg = /\d{3}/;
    if(reg.test(str) == true) return str.match(reg)[0];   //题目的最新出现是第一个出现的意思?
    return false;
}

编辑于 2018-09-09 20:56:20 回复(0)
function captureThreeNumbers(str) {
    return /[0-9]{3}/.exec(str) ? /[0-9]{3}/.exec(str)[0] : false;
}
发表于 2017-09-11 20:43:37 回复(1)
function captureThreeNumbers(str) {
    arr=str.match(/\d{3}/);
    if(arr[0])
        return arr[0];
    else
        return false;
    

}
为什么错了 arr[0]应该也可以啊
发表于 2017-07-18 16:34:58 回复(1)

 function captureThreeNumbers(str) {
    return str.match(/\d{3}/)?str.match(/\d{3}/).toString():false;
}
发表于 2016-12-07 09:45:34 回复(0)
        function captureThreeNumbers(str) {
            var num = /\d{3}/.exec(str);
            return (num && num[0]) || false;
        }

发表于 2016-11-22 11:14:19 回复(0)
//谁能告诉我为啥上面写的这个行,下面写的这个就不行?逻辑上一样啊
function captureThreeNumbers(str) {
    return str.match(/\d{3}/)?str.match(/\d{3}/)[0] : false;
    
}
//下面这个case通过率50%,我很纳闷什么数据会通不过
function captureThreeNumbers(str) {
    return str.match(/\d{3}/)[0] || false;
    
}
发表于 2016-08-24 22:18:11 回复(2)
大写的懵逼
发表于 2016-07-21 19:56:34 回复(0)
利用正则的exec方法和test方法,既可以提取出来
function captureThreeNumbers(str) {
  if( /\d{3}/g.test(str)){
      var arr = /\d{3}/g.exec(str) ;
      return arr[0] ;
  }
    else{
        return false ;
    }
    
}

发表于 2016-07-21 14:14:05 回复(0)