【JavaScript】编程题 2019.08.13

编程题:JS-计数、流程语句、函数等


1.正则

1.1 判断是否包含数字

  • 方法1:
function containsNumber(str) {
    for (var i=0;i<10;i++) {
        if(str.indexOf(i)!=-1){
            return true;
        }
    }
    return false;
}
  • 方法2:转载。正则
function containsNumber(str) {
    return /\d/.test(str);
}

1.2 检查重复字符串

  • 给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false
function containsRepeatingLetter(str) {
    return /([a-zA-Z])\1/.test(str);
}

1.3 判断是否以元音字母结尾

  • 方法1:
function endsWithVowel(str) {
    var len = str.length;
    switch (str[len - 1]) {
        case 'a':
        case 'o':
        case 'i':
        case 'e':
        case 'u':
        case 'A':
        case 'O':
        case 'I':
        case 'E':
        case 'U': return true;
        default: return false;
    }
}
  • 方法2:转载。正则,集合:[a,e,i,o,u];以。。。结尾:$;不区分大小写:i
function endsWithVowel(str) {
  return /[a,e,i,o,u]$/i.test(str);
}

1.4 获取指定字符串

  • 给定字符串 str,检查其是否包含 连续3个数字
    1、如果包含,返回最新出现的 3 个数字的字符串
    2、如果不包含,返回 false
  • 方法1:亲测可以,牛客网不行!
function captureThreeNumbers(str) {
	var nstr=[];
    for(var i=0;i<str.length-2;i++){
        if(typeof(+str[i])=='number'&& !isNaN(+str[i])){
            if(typeof(+str[i+1])=='number'&& !isNaN(+str[i+1])&&typeof(+str[i+2])=='number'&& !isNaN(+str[i+2])){
                nstr.push(+str[i],+str[i+1],+str[i+2]);
                return nstr;
            }
        }
    }
    return false;
}
  • 方法2:改进,亲测可以,牛客网不行!
function captureThreeNumbers(str) {
	var nstr=[];
    for(var i=0;i<str.length-2;i++){
        if( isNumber(+str[i])){
            if(isNumber(+str[i+1])&&isNumber(+str[i+2])){
                nstr.push(+str[i],+str[i+1],+str[i+2]);
                return nstr;
            }
        }
    }
    return false;
}
function isNumber(obj) {  
    return typeof obj === 'number' && !isNaN(obj)  
}  
  • 方法3:转载。正则,match()返回的是正则表达式匹配的字符串数组,连续的三个任意数字用正则表达式表示为/\d{3}/。
function captureThreeNumbers(str) {
  var arr = str.match(/\d{3}/);
  if(arr)return arr[0];
  return false;
 }

1.5 判断是否符合指定格式

  • 给定字符串 str,检查其是否符合如下格式
    1、XXX-XXX-XXXX
    2、其中 X 为 Number 类型
  • 方法1: 亲测可以,牛客网不行
function matchesPattern(str) {
    var s=0;
    if (str[3] == str[7] && str[3] == '-') {
        for (i = 0; i < str.length; i++) {
            if (i != 3 && i != 7 && isNumber(+str[i])) {
                s++;

            }
        }
    }
    if (s==str.length-2)return true;
    return false;
};
function isNumber(obj) {  
    return typeof obj === 'number' && !isNaN(obj);  
}  
  • 方法2:正则,转载。
本题需要注意格式,开头^和结尾$必须加上来限定字符串,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);
}

1.6 判断是否符合 USD 格式

  • 给定字符串 str,检查其是否符合美元书写格式
    1、以 $ 开始
    2、整数部分,从个位起,满 3 个数字用 , 分隔
    3、如果为小数,则小数部分长度为 2
    4、正确的格式如:$1,023,032.03 或者 $2.03,错误的格式如:$3,432,12.12 或者 $34,344.3
    在这里插入图片描述
function isUSD(str) {
   return /^\$\d{1,3}(,\d{3})*(\.\d{2})?$/.test(str);
}

2. 小结

1.正则化有利于简化代码,判断字符串!
2.注意“存在”与“任何”的区别,前者满足条件即可return,如1.4;后者需要遍历所有字符,如1.5.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值