Javascript 什么是JS正则表达式,用于获取下面的子字符串?

Javascript 什么是JS正则表达式,用于获取下面的子字符串?,javascript,regex,events,dom-events,Javascript,Regex,Events,Dom Events,我已将以下内容应用于字符串: function onclick(event) { showOverlay('overlayWrapper', 'overlayIframe', 'http://www.bestinvest.co.uk'); } 我希望能够得到字符串中3个参数的数组,这样我就可以使用(例如) newArray[0]/以下是一种厚颜无耻的方式来满足您的需求: var str = "function onclick(event) { showOverlay('overlayWrapp

我已将以下内容应用于字符串:

function onclick(event) {
showOverlay('overlayWrapper', 'overlayIframe', 'http://www.bestinvest.co.uk');
}
我希望能够得到字符串中3个参数的数组,这样我就可以使用(例如)


newArray[0]/以下是一种厚颜无耻的方式来满足您的需求:

var str = "function onclick(event) { showOverlay('overlayWrapper', 'overlayIframe', 'http://www.bestinvest.co.uk'); }"

var str2 = str.replace("function onclick(event) { showOverlay(", "new Array(").replace("); }", ")");
var newArray = eval(str2);

alert(newArray[0]);
alert(newArray[1]);
alert(newArray[2]);

假设onclick中没有其他内容,“subject”是保存您抓取的onlick内容的变量

var newArray = subject.match(/'([^']+)'/g);
这将导致阵列:

['overlayWrapper','overlayIframe','http://www.bestinvest.co.uk']
["'overlayWrapper'","'overlayIframe'","'http://www.bestinvest.co.uk'"]
更新-它实际上会生成数组:

['overlayWrapper','overlayIframe','http://www.bestinvest.co.uk']
["'overlayWrapper'","'overlayIframe'","'http://www.bestinvest.co.uk'"]

单引号是结果的一部分,因此您必须在事后去掉它们。

没有任何混乱的正则表达式/字符串解析:

var str = "function onclick(event) { showOverlay('overlayWrapper', 'overlayIframe', 'http://www.bestinvest.co.uk'); }";

function showOverlay() {
 alert('this is the original overlay function and should not be called by the below!');
}

(function() {
  function showOverlay(wrapper, iframe, url) {
    //access arguments directly or by arguments[0] arguments[1] etc.
    alert(wrapper);
  };

  eval('('+str+')()');
})();

我不明白你想做什么。您已经将三个字符串分隔开了。那么为什么需要正则表达式呢?字符串是什么样子的?输入和输出的示例会很好。我希望url不包含
,否则会出错;-)这不是最好的方法,因为我发现IE在将onclick作为字符串时使用单引号字符,并且它应用的不是“onclick”函数名,而是“匿名”函数名。但它在将来会有用的谢谢!您好,Gary,虽然eval()的使用不是很好,但它最终还是起到了作用,这是一种肮脏的快速方法。我最终完成了以下代码的路由。。。。var a;函数showOverlay(){a=arguments;}eval('('+trigger.attr('onclick')+')());在那里使用jquery。谢谢您的帮助。是的eval()可能会很糟糕,但只要您信任源,使用此方法应该是安全的。由于上面的额外安全层showOverlay包裹在它自己的小气泡(闭包)中,因此它无法访问它之外的任何内容。我的想法完全是闭包。谢谢你在这方面的帮助,让我的大脑尽可能地评估出最好的方法。