0

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

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

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

4

1 回答 1

0

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

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

编辑:

有了评论中的附加信息,这不应该吗?

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

编辑#2:

这是一个以您的原始正则表达式开头并使用此 StackOverflow 帖子中的一些信息的通行证:

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;}));

我自己测试过它,它似乎可以满足您的需求……或者至少可以让您走得更远。

于 2012-11-27T19:34:12.427 回答