正则表达式为什么如此重要?

本文通过两个实用案例展示了正则表达式的强大功能:快速判断字符串是否包含数字及是否存在连续重复字母。采用正则表达式的方法相比传统编程技巧更加简洁高效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

也许你现在还没意识到正则表达式的重要性,或者面对它繁杂的语法而无从下手,那么看完这篇博文你将豁然开朗。

博主将列举几个比较鲜明的例子帮助你理解。


1.判断一个字符串里是否包含数字,如果有,返回true;否则返回false;

拿到这个需求,首先我们脑中会想:

1)首先我们得遍历一下字符串里的每个字符吧;

2)然后要对每个字符进行判断;

3)需要把每个字符都转换成数字才能知道是否包含数字吧;

4)对于非数字,需要用到isNaN()这个方法或者其他方法判断


那么需要用到哪些方法呢?

1)charAt(index)用于字符串返回指定位置的字符

2)parseInt(value)用于将字符串转换为数值,不能转为数值的返回NaN(非数值);

3)isNaN()用于判断一个值是否为NaN,是返回true,不是返回false

注意不能用value==NaN来判断一个变量是否为非数值,因为NaN!=NaN


好了,让我们用最最常规(ben)的思想把这个方法实现吧。

function containsNumber(str) {
    for(var i=0;i<str.length;i++){
        var value=parseInt(str.charAt(i));//获取字符
        if(!isNaN(value)){//如果是数值
            return true;
        }
    }
    return false;

}   

是不是有一种写完人都要老了的感觉

让我们看看隔壁用正则表达式实现的方式

function containsNumber(str) {
    var d=/\d/;
    return d.test(str);

}   

注:\d匹配一个数字

这也太….太简单粗暴了吧,就这么两三行就实现了上面五六七八九行的功能,是不是觉得很方便呢?

让我们继续看下面的例子

2.给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false

笨方法:

1)遍历字符串

2)对比当前字符和紧挨的下一个字符是否相同

3)遇到相同的直接返回true,无需继续比较

function containsRepeatingLetter(str) {
    var len=str.length-1;
    for(var i=0;i<len;i++){
        var k=str.charAt(i);
        if(k===str.charAt(i+1)&&isNaN(parseInt(k))){
            return true;
        }
    }
    return false;
}

使用正则表达式

function containsRepeatingLetter(str) {
     return /([a-zA-Z])\1/.test(str);//引用第一个分组
 }

这里()括号包含的就是属于一个分组

[a-zA-Z]匹配一个a-z或者A-Z字母

\1代表引用第一个分组,也就是第一个分组是a,引用的也只能是a,\2代表引用第二个分组

是不是很强大呢

未完待续

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值