使用 JavaScript 正则表达式替换文本中的类似字符串
replace similar string in a text using javascript regex
我们有这样的文本:
这是一个测试 :rep 更多文本更多 :rep2 另一个文本文本 qweqweqwe。
或
这是一个测试 :rep:rep2 更多文本更多 更多 :rep2:rep 另一个文本文本 qweqweqwe。(无空间)
我们应该将 :rep 替换为 TEXT1,将 :rep2 替换为 TEXT2。
问题:尝试使用类似以下内容进行替换时:
rgobj = new RegExp(":rep","gi");
txt = txt.replace(rgobj,"TEXT1");
rgobj = new RegExp(":rep2","gi");
txt = txt.replace(rgobj,"TEXT2");
我们在它们中都得到了 TEXT1,因为 :rep2 与 :rep 和 :rep 过程更快。
如果您要求
:rep
始终以单词边界结尾,请在正则表达式中明确说明:
new RegExp(":rep''b","gi");
(如果你不需要单词边界,你就无法区分"你好,我得到了:rep24 eggs"是什么意思 - 这是:rep
,:rep2
,还是:rep24
?
编辑:
根据用户提供的匹配字符串的新信息,最佳解决方案是按长度对匹配字符串进行排序,并按该顺序执行替换。这样,最长的字符串将首先被替换,从而消除了长字符串的开头将被该长字符串中包含的较短子字符串匹配项部分替换的风险。因此,:replongeststr
在:replong
之前被替换,在:rep
之前被替换。
如果数据始终一致,请将 :rep2
替换为 :rep
之前
否则,您可以搜索:rep's
,搜索关键字后面的空格。 只要确保你也更换了空间。
相关文章:
- JSON解析字符串文本中的双引号
- 未将字符串文本附加到DOM
- jQuery替换多次出现的子字符串/文本
- 未终止的字符串文本问题
- 以字符串形式内化字符串文本
- MVC - 处理新行的未终止字符串文本
- 如何取消转义 JavaScript 字符串文本值
- 未终止的字符串文本,不换行
- 未终止的字符串文本/无效或意外的令牌
- 当您将字符串文本传递给变量,然后将该字符串中的数据分配给新变量时,它叫什么
- 在Javascript中将字符串文本提取为常量是一种最佳实践吗
- 如何将二进制数据从binaryjs转换为字符串/文本
- 在Javascript字符串文本中解释HTML标记
- Selenium IDE在字符串文本中提供了SyntaxError:JSON.parse:错误的控制字符
- 聚合物元素未在字符串/文本中的聚合物中注册
- 语法错误未终止字符串文本jquery
- 为什么大多数语言在字符串文本中使用双引号而不是单引号
- 如何使用jquery在span中显示多行字符串文本?
- 使用javascript存储动态内容时,未终止字符串文本错误
- 奇怪的未终止字符串文本错误与Firefox