javascript正则表达式替换字符串中的最后一个模式?

杰瑞医生

我有一个看起来像的字符串

var std = new Bammer({mode:"deg"}).bam(0, 112).bam(177.58, (line-4)/2).bam(0, -42)
  .ramBam(8.1, 0).bam(8.1, (slot_height-thick)/2)

我想在最后一个.bam().ramBam().

str.replace(/(\.(ram)?bam\(.*?\))$/i, '<span class="focus">$1</span>');

我希望得到:

new Bammer({mode:"deg"}).bam(0, 112).bam(177.58, (line-4)/2).bam(0, -42).ramBam(8.1, 0)<span class="focus">.bam(8.1, (slot_height-thick)/2)</span>

但不知何故,我继续与非贪婪参数作斗争,它用跨度标签包装了新 Bammer 之后的所有内容。还尝试了之前的问号,$以使该组不贪婪。

我希望能轻松做到这一点,并与bamramBam我认为正则表达式将是最简单的解决方案,但我想我错了。

我哪里出错了?

卡里·斯沃夫兰

您可以使用以下正则表达式:

(?!.*\)\.)(\.(?:bam|ramBam)\(.*\))$

演示

(?!.*\)\.)         # do not match ').' later in the string
(                  # begin capture group 1                   
  .\               # match '.'
  (?:bam|ramBam)   # match 'bam' or 'ramBam' in non-cap group
  \(.*\)           # match '(', 0+ chars, ')'
)                  # end capture group 1
$                  # match end of line

对于问题中给出的示例,负前瞻(?!.*\)\.)将内部指针移动到子字符串之前:

.bam(8.1, (slot_height-thick)/2)

因为这是字符串中).后面没有子字符串的第一个位置

如果没有行尾锚点$并且字符串结束:

...0).bam(8.1, (slot_height-thick)/2)abc

然后仍然会进行替换,从而产生一个以字符串结尾的字符串:

...0)<span class="focus">.bam(8.1, (slot_height-thick)/2)</span>abc

如果字符串不以预期捕获组的内容结尾,则包含行尾锚点可防止替换。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用正则表达式替换字符串中的最后一个数字

如何使用正则表达式替换字符串中的最后一个点?

如何使用JavaScript正则表达式提取字符串中的最后一个单词?

使用javascript正则表达式获取字符串中的最后一个数字

使用正则表达式替换匹配字符串的最后一个字符

如何用字符串中的另一个正则表达式替换一个正则表达式

用另一个字符串替换相同模式的正则表达式

创建一个正则表达式模式以匹配“字符串/ uuid”模式

正则表达式-替换仅包含一个但重复字符的字符串

正则表达式匹配字符串中的最后一个字符

正则表达式匹配字符串中的最后一个字符 - C#

正则表达式最后一个单词从字符串末尾开始

正则表达式模式替换字符串中最后一次出现的模式

寻找一个正则表达式来替换我的字符串

正则表达式:引号中的最后一个字符串

R-正则表达式从字符串中删除最后一个单词

正则表达式以匹配字符串中的最后一个浮点数

正则表达式替换特定匹配项的字符串的第一个和最后一个字符

用另一个替换正则表达式中的子字符串的方法

使用正则表达式VB NET匹配并替换字符串中的第一个和最后一个字符以及子字符串

如何比较/匹配/替换javascript(正则表达式)字符串与另一个忽略字符串顺序的字符串

如何只拒绝正则表达式模式中的一个字符串

用于在一个字符串中返回多个模式的正则表达式

在两个标记字符串之间的字符串中查找/替换正则表达式模式

正则表达式问题:在字符串的最后一个逗号分隔字符串

创建一个正则表达式来替换字符串中最后一次出现的字符

正则表达式-查找行中的字符串,但替换同一行中的另一个字符串

需要一个接受表达式的字符串的正则表达式

用-作为一个单词在正则表达式中拆分字符串