JavaScript正则表达式专题

判断是否包含数字

例如: 给定字符串 str,检查其是否包含数字,包含返回 true,否则返回 false
输入:‘abc123’
输出: true

两种方法:

  1. 正则表达式:
function containsNumber(str) {
    var reg = /\d/
    return reg.test(str)
}
  1. 遍历:
function containsNumber(str) {
    for(let i = 0; i < str.length; i++) {
        if (str.indexOf(i) !== -1) {
            return true
        }
    }
    return false
}

检查重复字符串

例如:给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false
输入:‘rattler’
输出:true

方法一:采用正则表达式分组形式的反向引用。这个理解起来可能一头雾水,我们可以举个例子:

var reg = /(\w{3}) is \1/
reg.test('kid is kid') // true
reg.test('dik is dik') // true
reg.test('kid is dik') // false
reg.test('dik is kid') // false

该例子可以判断要检测的字符串是否中间为is,左右两边相同长度为3的字符串,如果满足,返回true,否则,返回false.所以很显然,如果要检测重复连续的字母,我们需要将is去掉,\w{3}改为[a-zA-Z]即可。

function containsRepeatingLetter(str) {
    var reg = /([a-zA-Z])\1/
    return reg.test(str)
}

方法二:常规for循环遍历方式:

function containsRepeatingLetter(str) {
    var reg = /[a-zA-Z]/
    for(let i = 0; i < str.length; i++) {
        if (str[i] === str[i + 1] && reg.test(str[i])) {
            return true
        }
    }    
    return false
}

判断是否以元音字母结尾

例如:给定字符串 str,检查其是否以元音字母结尾
1、元音字母包括 a,e,i,o,u,以及对应的大写
2、包含返回 true,否则返回 false
输入:‘gorilla’
输出:true

function endsWithVowel(str) {
    // /i 为不区分大小写
    var reg = /(a|e|i|o|u)$/i
    return reg.test(str)
}

获取指定字符串

给定字符串 str,检查其是否包含 连续3个数字
1、如果包含,返回最先出现的 3 个数字的字符串
2、如果不包含,返回 false
输入:‘9876543’
输出:987

function captureThreeNumbers(str) {
    var res = str.match(/(\d{3})/)
    // console.log(res);
    if (res) {
        return res[0]
    }
    return false
}
// res输出为:
[ '987', '987', index: 0, input: '987654', groups: undefined ]

判断是否符合指定格式

例如: 给定字符串 str,检查其是否符合如下格式
1、XXX-XXX-XXXX
2、其中 X 为 Number 类型

function matchesPattern(str) {
    var reg = /^(\d{3}-){2}\d{4}$/
    return reg.test(str)
}

判断是否符合USD格式

给定字符串 str,检查其是否符合美元书写格式
1、以 $ 开始
2、整数部分,从个位起,满 3 个数字用 , 分隔
3、如果为小数,则小数部分长度为 2
4、正确的格式如:$1,023,032.03 或者 $2.03,错误的格式如:$3,432,12.12 或者 $34,344.3
输入:’$20,933,209.93’
输出:true

function isUSD(str) {
    var reg = /^\$\d{1,3}(\,\d{3})*(\.\d{2})?$/
    /**
     * ^\$ 以$符号开头
     * \d{1,3} 1-3位数字
     * (\,\d{3})* 0个或多个, 3位数字
     * (\.\d{2})? 0个或1个2位数字
     */
    return reg.test(str)
}

欢迎大家留言评论!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值