2014-03-26 83 views
0

我有一个字符串与其中的各种html标签。例如:Javascript来搜索字符串并返回匹配数

var str = "<div>My text is <a> here</a> and it is <a> very wonderful</a>. For an example of how very great <a> my text is</a>. Please have a look</div>" 

我想使用JavaScript与string.replace()只更换不属于标签(在这种情况下锚)内的话。它也将取决于用户输入,所以我需要在RegExp中包含一个变量。我首先用string.match()来测试;验证我只获得一场比赛。

我借用javascript regex replace some words with links, but not within existing links的代码,只是切换。替换为.match。所以我用下面的代码:

var word = "very"; 
var regex = new RegExp("/" + word + "(?![^<]*?<\/a>)/g"); 
console.log(str.match(regex).length); 

它返回到我 类型错误:titleText.match(...)为空 这表明,我认为没有找到匹配。但是,如果我这样构建它:

console.log(str.match("/very(?![^<]*?<\/a>)/g").length); 

我得到预期的结果数量;在这种情况下,1;

有什么建议吗?

+0

*任何建议*没错,涉及要辨别它们的HTML几乎所有情况下,不使用正则表达式。 – alex

+1

使用RegEx解析HTML?祝你好运。 –

+0

'将RegExp(word +'(?![^ <]*?<\/a>)','g')''作为RegExp()'格式,当与正则表达式连接时。 – PHPglue

回答

2

建立正则表达式作为一个字符串时不要包含斜线:

var regex = new RegExp(word + "(?![^<]*?<\/a>)","g"); 
相关问题