php 正则匹配 exec,如何在JavaScript中使用类似于PHP的preg_match_all()的正则表达式匹配...

我建议使用替代正则表达式,使用子组单独捕获参数的名称和值:

function getUrlParams(url) {

var re = /(?:\?|&(?:amp;)?)([^=]+)(?:=?([^]*))/g,

match, params = {},

decode = function (s) {return decodeURIComponent(s.replace(/\+/g, " "));};

if (typeof url == "undefined") url = document.location.href;

while (match = re.exec(url)) {

params[decode(match[1])] = decode(match[2]);

}

return params;

}

var result = getUrlParams("http://maps.google.de/maps?f=q&source=s_q&hl=de&geocode=&q=Frankfurt+am+Main&sll=50.106047,8.679886&sspn=0.370369,0.833588&ie=UTF8&ll=50.116616,8.680573&spn=0.35972,0.833588&z=11&iwloc=addr");

result 是一个对象:

{

f:“q”

地理编码:“”

hl:“de”

即:“UTF8”

iwloc:“addr”

ll:“50.116616,8.680573”

问:“美因河畔法兰克福”

sll:“50.106047,8.679886”

来源:“s_q”

spn:“0.35972,0.833588”

sspn:“0.370369,0.833588”

z:“11”

}

正则表达式分解如下:

(?:#非捕获组

\?|&#“?” 要么 ”&”

(?:放大器;)?#(对于错误的HTML编码的网址,请允许“&”)

)#end非捕获组

(#组1

[^ =&#] +#除“=”,“&”或“#”之外的任何字符; 至少一次

)#end end 1  - 这将是参数的名称

(?:#非捕获组

=?#an“=”,可选

(#组2

[^&#] *#除“&”或“#”之外的任何字符; 任何次数

)#end end 2  - 这将是参数的值

)#end非捕获组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值