Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';我不明白为什么replace()在这里不起作用_Javascript_Html_Regex_Xml_Xpath_Xslt - Fatal编程技术网

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

控制台日志(输入)
*
被贪婪地匹配,也就是说,它将尝试覆盖尽可能多的输入,同时仍然让整个表达式匹配。删除通配符修复了此问题:

var输入='测试111;
变量效应='强',//动态
selectedText='111';//动态
var regex=new RegExp(“”+selectedText+“”);
if(正则表达式测试(输入)){
console.log(“替换”);
输入=输入。替换(regex,selectedText);
}

控制台日志(输入)
*
被贪婪地匹配,也就是说,它将尝试覆盖尽可能多的输入,同时仍然让整个表达式匹配。删除通配符修复了此问题:

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>'