为什么我不能将我的正则表达式输出到变量,然后再次在其上运行正则表达式?
我正在编写一个grassmonkey javascript,它可以获取一些原始数据,在其上运行一些正则表达式,然后在其上运行更多正则表达式以优化结果:
// I tried this on :: http://stackoverflow.com/
var tagsraw = (document.getElementById("subheader").innerHTML);
alert(tagsraw);
获取原始数据(以上代码)有效
var trimone = tagsraw.match(/title\W\W\w+\s\w+\s\w+\s\w+\s\w+/g);
alert(trimone);
运行正则表达式一次有效(代码上方);但是运行(下面的代码)没有?
var trimtwo = trimone.match(/\s\w+\s\w+\s\w+\s\w+/g);
alert(trimtwo);
有人可以建议我代码/方法有什么问题吗?
最佳答案
第一个匹配成功的原因是因为innerHTML返回一个字符串。
但是,该匹配返回一个数组,因此将其视为一个:
for (var i=0; i<trimone.length; i++)
{
var trimtwo = trimone[i].match(/\s\w+\s\w+\s\w+\s\w+/g);
alert(trimtwo);
}
编辑:
但是,请尝试使用以下代码,我认为这与您要实现的目标有点接近:
var trimone = tagsraw.match(/title\s*=\s*".*"/g);
alert(trimone);
for (var i=0; i<trimone.length; i++)
{
alert(trimone[i]);
}