Javascript Can';我不明白为什么replace()在这里不起作用
我的意见是:Javascript Can';我不明白为什么replace()在这里不起作用,javascript,html,regex,xml,xpath,xslt,Javascript,Html,Regex,Xml,Xpath,Xslt,我的意见是: '<div><strong>test</strong><div><strong>kkk</strong></div><div><strong>111</strong></div></div>' 您当前的正则表达式匹配太多(=贪婪) 您只需要使用带有[^]*的非标记: var输入='测试
'<div><strong>test</strong><div><strong>kkk</strong></div><div><strong>111</strong></div></div>'
您当前的正则表达式匹配太多(=贪婪)
您只需要使用带有[^]*
的非标记:
var输入='测试111;
变量效应='强',//动态
selectedText='111';//动态
var regex=new RegExp(“([^]*)”+selectedText+“([^]*)”);
//如果您不想在所选文本周围保留任何文本,也可以选择此文本
//var regex=new RegExp(“([^]*)”+selectedText+“([^]*)”);
if(正则表达式测试(输入)){
console.log(“替换”);
input=input.replace(regex,“$1”+selectedText+“$2”);
//或者,如果您选择用所选文本替换整个文本,则选择此选项
//输入=输入。替换(regex,selectedText);
}
控制台日志(输入)代码>您当前的正则表达式匹配太多(=贪婪)
您只需要使用带有[^]*
的非标记:
var输入='测试111;
变量效应='强',//动态
selectedText='111';//动态
var regex=new RegExp(“([^]*)”+selectedText+“([^]*)”);
//如果您不想在所选文本周围保留任何文本,也可以选择此文本
//var regex=new RegExp(“([^]*)”+selectedText+“([^]*)”);
if(正则表达式测试(输入)){
console.log(“替换”);
input=input.replace(regex,“$1”+selectedText+“$2”);
//或者,如果您选择用所选文本替换整个文本,则选择此选项
//输入=输入。替换(regex,selectedText);
}
控制台日志(输入)您的正则表达式中的code>*
被贪婪地匹配,也就是说,它将尝试覆盖尽可能多的输入,同时仍然让整个表达式匹配。删除通配符修复了此问题:
var输入='测试111;
变量效应='强',//动态
selectedText='111';//动态
var regex=new RegExp(“”+selectedText+“”);
if(正则表达式测试(输入)){
console.log(“替换”);
输入=输入。替换(regex,selectedText);
}
控制台日志(输入)您的正则表达式中的code>*
被贪婪地匹配,也就是说,它将尝试覆盖尽可能多的输入,同时仍然让整个表达式匹配。删除通配符修复了此问题:
var输入='测试111;
变量效应='强',//动态
selectedText='111';//动态
var regex=new RegExp(“”+selectedText+“”);
if(正则表达式测试(输入)){
console.log(“替换”);
输入=输入。替换(regex,selectedText);
}
控制台日志(输入)代码>请不要使用正则表达式处理xml/html…@CommuSoft什么是更好的选择,为什么更好?例如,您可以这样重写它;或者使用xpath。它之所以更好是因为。请不要用正则表达式处理xml/html…@CommuSoft什么是更好的选择,为什么更好?例如,你可以这样重写它;或者使用xpath。它更好,因为。([^]*)“+selectedText+”([^]*)
和“$1”+selectedText+“$2”)
是为了防止您希望将文本保留在selectedText
周围。如果您不想保留它,您可以使用原始建议。什么更有效?我现在在答案中添加了两个选项。两个选项都很有效,不能说哪一个更好。我会做一些测试并让你知道。不要做一些测试,做一些测试。我保证,每当您使用正则表达式处理XML时,都会有人编写一个测试用例,您的代码将给出错误的答案。([^]*)“+selectedText+”([^]*)
和“$1”+selectedText+“$2”)
是为了防止您希望将文本保留在selectedText
周围。如果您不想保留它,您可以使用原始建议。什么更有效?我现在在答案中添加了两个选项。两个选项都很有效,不能说哪一个更好。我会做一些测试并让你知道。不要做一些测试,做一些测试。我保证,每当您使用正则表达式处理XML时,都会有人编写一个测试用例,让您的代码给出错误的答案。
'<div><strong>test</strong><div><strong>kkk</strong></div><div>111</div></div>'