为什么我不能将正则表达式输出到变量,然后再次对其运行正则表达式?
我正在编写一个greasemonkey 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]);
}
关于javascript - 如何做多个正则表达式,每次都细化结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1473820/