如何用JavaScript正则提取k=与&之间的目标字符串?
提取iframe src中k参数的值(正则表达式实现)
我懂你现在的困扰:原来用substring的方法没法正确拿到想要的k参数值,需要改用JavaScript正则表达式来搞定。先聊聊原来代码的问题:你用lastIndexOf("k=")+1,这里k=是两个字符,偏移量应该是+2才对;而且lastIndexOf("&")找的是整个字符串里最后一个&,这样会把k参数后面所有内容都包含进去,自然得不到正确结果。
下面用正则表达式来解决这个问题,直接精准匹配出k参数的值:
var str = '<iframe src="https://www.google.com/recaptcha/api2/anchor?ar=1&k=6LekMVAUAAAAAPDp1Cn7YMzjZynSb9csmX5V4a9P&co=aHR0cHM6Ly93d3cub21lZ2xlLmNvbTo0NDM.&hl=en&v=v1526884278587&size=normal&cb=jssxsvw1wcmm" role="presentation" scrolling="no" sandbox="allow-forms allow-popups allow-same-origin allow-scripts allow-top-navigation allow-modals allow-popups-to-escape-sandbox" style="outline: 1px solid blue;" width="304" height="78" frameborder="0"></iframe>'; // 正则匹配k=后面直到第一个&的内容(兼容转义的&) var kRegex = /k=([^&]+)/; var matchResult = str.match(kRegex); if (matchResult) { var targetValue = matchResult[1]; console.log(targetValue); // 输出预期结果:6LekMVAUAAAAAPDp1Cn7YMzjZynSb9csmX5V4a9P } else { console.log("没有找到目标k参数"); }
正则表达式说明:
k=:精准匹配参数名的字面量([^&]+):这是一个捕获组,[^&]表示匹配任意不是&的字符,+表示匹配一次或多次,这样就能精准拿到k参数值,直到遇到下一个&(不管是原生的&还是转义后的&里的&)为止。
这个方法既简洁又准确,完美解决你提取特定参数值的需求。
内容的提问来源于stack exchange,提问作者TravelWhere
相关产品推荐
相关产品推荐

