Regex extjs4.2-替换子字符串,但避免更改标记
在给定字符串中,例如Regex extjs4.2-替换子字符串,但避免更改标记,regex,string,extjs,replace,extjs4.2,Regex,String,Extjs,Replace,Extjs4.2,在给定字符串中,例如“这是我的问题”,我需要替换子字符串 目标:用-标记围绕子字符串以突出显示 示例: 子字符串:“e” 期望的结果:这是我的问题 实际结果:这是我的问题 如何防止伪标记和被更改 到目前为止,我使用的是: 根据我的示例,filterValue将是子字符串“e” var filterStartTag = '<mark>'; var filterEndTag = '</mark>'; var replaceFilterValue = filterStartTa
“这是我的问题”
,我需要替换子字符串
目标:用
-标记围绕子字符串以突出显示
示例:
子字符串:“e”
期望的结果:这是我的问题
实际结果:这是我的问题
如何防止伪标记
和
被更改
到目前为止,我使用的是:
根据我的示例,filterValue将是子字符串“e”
var filterStartTag = '<mark>';
var filterEndTag = '</mark>';
var replaceFilterValue = filterStartTag + filterValue + filterEndTag;
value = value.replace(new RegExp(filterValue, 'gi'), replaceFilterValue);
var filterStartTag='';
变量filterEndTag='';
var replaceFilterValue=filterStartTag+filterValue+filterEndTag;
value=value.replace(新的RegExp(filterValue,'gi'),replaceFilterValue);
我需要找到一个解决方案,在这个解决方案中,像“t”、“te”、“erm”(等等)这样的子字符串也可以被适当地替换
任何帮助都将不胜感激。尝试以下方法:
替换(/(e)+(?![^)/g,“$1”)
(e)
被解释为替换的$1
,可以替换为符合您需要的任何正则表达式(用括号括起来,以允许$1
替换)。因此,您也可以这样做,以便更具动态性:
var r = new RegExp("(" + filterValue + ")+(?![^<]*>)", "gi");
value.replace(r, "<mark>$1</mark>");
var r=newregexp(“(“+filterValue+”)+(?![^)”,“gi”);
价值。替换(r,“$1”);
本质上,这意味着要匹配第一个括号中的任何内容,除非它被标记(?![^)
包围,请尝试以下操作:
替换(/(e)+(?![^)/g,“$1”)
(e)
被解释为替换的$1
,可以替换为符合您需要的任何正则表达式(用括号括起来,以允许$1
替换)。因此,您也可以这样做,以便更具动态性:
var r = new RegExp("(" + filterValue + ")+(?![^<]*>)", "gi");
value.replace(r, "<mark>$1</mark>");
var r=newregexp(“(“+filterValue+”)+(?![^)”,“gi”);
价值。替换(r,“$1”);
本质上,这意味着匹配第一个括号中的任何内容,除非它被标记
(?![^)包围
你真的救了我一天!我一整天都在绞尽脑汁,突然看到了你的答案。非常感谢,它似乎工作得很完美!我还有很多东西要学,似乎正则表达式也应该是其中的一部分;)!非常感谢!还有一个问题仍然存在:如果洛桑的“n”应该被替换,只有第一个问题是替换->洛桑,而不是我需要的:洛桑(也可用:洛桑)。你能再帮我一次吗?天哪…愚蠢的我:删除“+”吗:var r=new RegExp(“+filterValue+”)(![^)”,“gi”);
:)你真的救了我一天!我一整天都在绞尽脑汁,突然看到了你的答案。非常感谢,它似乎工作得很完美!对我来说还有很多东西要学,似乎正则表达式也应该成为其中的一部分;)!非常感谢!还有一个问题仍然存在:如果洛桑的“n”被替换,只有第一次出现替换->洛桑,而不是我需要的:洛桑(也可用:洛桑)。你能再帮我一次吗?天哪…愚蠢的我:删除“+”吗:var r=new RegExp((“+filterValue+”)(![^)”,“gi”);
:)