使用正则表达式在标记之间定位特定文本

时间:2012-11-27 19:30:31

标签: regex html-parsing

我正在尝试选择字符串“Target”区分大小写,而不是在HTML代码之前或之后抓取任何额外空格,而不是获取标签或标签属性。
我有这个正则表达式:

/(?![^<>]*>) *(Target) *([^ \d])/g

这会抓住多个出现的:Target,但它也会抓住前后的额外空格,跟随它的第一个字符或者后面的额外空格。
<div id="Target">text Target othertext</div>中,它抓取Target o
我如何完善这个?

1 个答案:

答案 0 :(得分:0)

根据您用于处理RegEx的内容,可能是因为您正在使用多个捕获组。我将其他捕获组更改为非捕获组,方法是在其前面添加?:

/(?:?![^<>]*>) *(Target) *(?:[^ \d])/g

修改

根据评论中的其他信息,这不应该有效吗?

var str="<div id=\"Target\">text Target othertext</div>";
str = str.replace(/Target/g,"New!");

编辑#2:

这是一个以原始正则表达式开头的传递,并使用this StackOverflow post中的一些信息:

var str="<div id=\"Target\">text Target othertext</div><Target test=\"nothing\">Target this is Targeted.</Target>";
alert(str.replace(/(?![^<>]*>)( *)Target( *[^ \d])/g,function(str,group1,group2){return group1 + "NEW!" + group2;}));

我自己测试了它,它似乎做了你需要的......或者至少让你更进一步。