【小5聊】使用正则表达式进行简单(匹配字符串算法)

获取地址参数或者获取某一个字符串里面的序列化参数,那么正则表达式就是比较好的一个获取方式,精简方便,前提需要对正则表达式的语法进行简单了解

1、假如字符串如下

 

"http://www.test.com/gp/product/B09BNH4ZMV/ref=ox_sc_act_title_3?smid=A3G474Z3NV2OPA&psc=1"

2、普通逻辑算法方式匹配

使用if、for、split()进行匹配

  • 代码
function getUrlParam(str, name) {

    var value = '';
    var a_arr = str.split('?');
    if (a_arr.length > 1) {

        b_arr = a_arr[1].split('&')

        if (b_arr.length > 0) {

            for (var i = 0; i < b_arr.length; i++) {

                var c_arr = b_arr[i].split('=');

                if (c_arr.length > 1) {

                    var _name = c_arr[0];
                    var _value = c_arr[0];

                    if (name == _name) {

                        value = _value;
                    }
                }
            }
        }
    }

    return value;
}
  • 效果

 3、正则表达式实现

  • 表达式

"http://www.test.com/gp/product/B09BNH4ZMV/ref=ox_sc_act_title_3?smid=A3G474Z3NV2OPA&psc=1".match("smid=[^&]+")

1)匹配输入字符串的开始位置:^

2)匹配方括号里的字符:[]

3)匹配前面的子表达式一次或多次:+

4)smid=[^&]+:匹配固定值smid=之后的值,到固定值&符号结束

5)匹配出来的值,就是第一次出现smid=和第一次出现&之间的值,加上固定值本身

6)最后结合split('=')方法进行匹配

  • 代码
var str="http://www.test.com/gp/product/B09BNH4ZMV/ref=ox_sc_act_title_3?smid=A3G474Z3NV2OPA&psc=1";
var arr=str.match("smid=[^&]+");
if(arr!=null&&arr.length>0){
  var _arr=arr[0].split('=');
  if(_arr.length>1){
     var value=_arr[1];
  }
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈小5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值