有人能解释一下String.match(RegEx)在这个问题上是如何工作的吗



例如,我有一个输入"cid=5〃;,并且该函数的输出是一个数组({cid=5,,5}(。我对结果感到困惑。有人能帮我解释一下这个问题吗?

function getParameter(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)","i");
var r = location.search.substr(1).match(reg);
if (r!=null) return (r[2]); return null;
}

谢谢你在下面的评论,但我仍然对这个问题感到困惑。所以,我会尽量更清楚地表达我的问题。RegExp对象的第二个参数是"i",这意味着忽略大小写,它将匹配一次并返回一个String对象。那么,为什么它会返回一个类似于{cid=5,,5,}的字符串数组呢?

RegExp对象的第二个参数是"i",这意味着忽略大小写,它将匹配一次并返回一个String对象。那么,为什么它会返回一个类似于{cid=5,,5,}的字符串数组呢?

本例中使用的正则表达式包括捕获组。如果未设置'g'标志,则String.match返回的数组将包括完全匹配及其相关的捕获组。

(^|&)创建字符串开始或与号和的捕获组

([^&]*)创建一个捕获组,捕获组中的任何字符都不是一个与号,并且是的0到多次

(&|$)创建一个"与"或字符串末尾的捕获组

最新更新