小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聊使用正则表达式进行简单(匹配字符串算法)的主要内容,如果未能解决你的问题,请参考以下文章