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

Posted 小5聊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小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];
  

 

以上是关于小5聊使用正则表达式进行简单(匹配字符串算法)的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式匹配对称小括号

MySql-正则表达式

小5聊简单的算法进行升降序排序(递归算法)

正则入门小随

简单理解正则表达式

怎么用正则表达式匹配小括号里内容(含括号)?