我正在尝试选择字符串“Target”区分大小写,而不是在HTML代码之前或之后抓取任何额外空格,而不是获取标签或标签属性。
我有这个正则表达式:
/(?![^<>]*>) *(Target) *([^ \d])/g
这会抓住多个出现的:Target,但它也会抓住前后的额外空格,跟随它的第一个字符或者后面的额外空格。
在<div id="Target">text Target othertext</div>
中,它抓取Target o
我如何完善这个?
答案 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;}));
我自己测试了它,它似乎做了你需要的......或者至少让你更进一步。