Regex

1,一串字符串里面至少有三个6,并且不考虑大小写

/^.{3}(.*[6]){3}/i

^.{3}: Skip the first three characters 

()是group,找完一次,会从上次结束的地方开始找

{3}是至少匹配三次的意思,如下图:

.*是匹配所有其他不是6的(空格,数字,字母,啥的)

[6]是只是匹配6这个数字

[6]和.*是可以替换顺序的,因为在正则表达式里面[6]的优先级高于.*,如下图:

 

 

 

Regex in Practice: check and highlight 

function formatNumber (number, regex, highlight) {

        // 格式化号码。举个例子,把"18305960745"格式化成"183 0596 0745"
        function format(number) {
            return number.substr(0, 3) + " " + number.substr(3, 4) + " " + number.substr(7, 4);
        }

        var formattedNumber = format(number);

        if (isBlank(regex)) {
            return format(formattedNumber);
        }

        if (regex.includes("|")) {

            //如果是全部特征

            // 高亮正则数组
            var highlightArr = highlight.split("|");
            // 搜索正则数组
            var regexArr = regex.split("|");

            // 对各个搜索正则进行匹配,如果匹配到就使用高亮正则进行replace
            regexArr.some(function (regexItem, index) {
                var regExp = new RegExp(regexItem);
                // 是否匹配
                var isMatched = regExp.test(formattedNumber);
                if (isMatched) {
                    // 如果匹配,那么就使用高亮正则进行高亮

                    var highlightItem = highlightArr[index];

                    if (regexItem.startsWith("^.{3}")) {
                        // 没有包括前三位;
                        formattedNumber = formattedNumber.substring(0, 3) + formattedNumber.substring(3).replace(new RegExp(highlightItem, "g"), function (match) {
                            return "<strong>" + match + "</strong>";
                        });
                    } else {
                        // 包括前三位;
                        formattedNumber = formattedNumber.replace(new RegExp(highlightItem, "g"), function (match) {
                            return "<strong>" + match + "</strong>";
                        });
                    }

                }

                // 返回匹配结果
                return isMatched;
            });

            // 返回高亮过的号码
            return formattedNumber;

        }

        // 如果不是全部特征,使用高亮正则就行了

        if (regex.startsWith("^.{3}")) {
            // 没有包括前三位;
            return formattedNumber = formattedNumber.substring(0, 3) + formattedNumber.substring(3).replace(new RegExp(highlight, "g"), function (match) {
                return "<strong>" + match + "</strong>";
            });
        }

        // 包括前三位;
        return formattedNumber = formattedNumber.replace(new RegExp(highlight, "g"), function (match) {
            return "<strong>" + match + "</strong>";
        });
    }

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值