【问题标题】:How to find and replace a name containing a number and store that number in a var?如何查找和替换包含数字的名称并将该数字存储在 var 中?
【发布时间】:2013-10-30 14:53:54
【问题描述】:

我有一个这样的变量:

var text = "Lorem ipsum dolor sit amet, {img3} consectetur adipiscing elit."

我需要用 html 标记替换 ({img3}),
但我需要知道数字 (在示例 3 中,但可以是任何其他数字) 来匹配它。

text = text.replace(/{img[0-9]+}/g, "<img src='imageName" + [0-9] + "'>");

最好的方法是什么?

【问题讨论】:

标签: javascript jquery regex


【解决方案1】:

您需要在匹配组中捕获{img 之后的数字并在替换中重复使用:

text = text.replace(/{img(\d+)}/g, "<img src='imageName$1'>");
// => Lorem ipsum dolor sit amet, <img src='imageName3'> consectetur adipiscing elit.

【讨论】:

  • 太棒了!但是,如果我需要像这样在 var 中传递 $1,我该怎么办:""?
  • 我尝试了 eval 和一些串联扭曲,但我似乎无法在 Array:S 中使用 $1
  • 您的意思是,您希望将数组中的值作为 $1 放入?
  • 不,我想用 $1 引用一个数组编号。例如,如果 $1 = 3,我想获取数组中的第三个值。
  • @Simon Arnold 请参阅下面的答案。如果这是您的要求。
【解决方案2】:

我想用 $1 引用一个数组编号。例如,如果 $1 = 3,我想获取数组中的第三个值。

是的,可以将函数作为#String.replace 中的第二个参数,

注意: m1 是从正则表达式中捕获的值。我从m1 中减去-1,其中11 是我的第一个数组元素,如果您想要0 索引,只需删除该部分即可。

var text  = "Lorem ipsum dolor sit amet, {img3} consectetur adipiscing elit.";
var array = [11, 20, 57, 15, 25, 66];

text = text.replace(/{img(\d+)}/g, function(s, m1) {
     return "<b>" + array[m1-1] + "</b>"; #return <img> tag code here.
})

返回:

Lorem ipsum dolor sit amet, 57 consectetur adipiscing elit. 

【讨论】:

  • 这太棒了!谢谢
  • 我想这就是你要问的?
猜你喜欢
  • 2012-07-23
  • 2021-05-31
  • 1970-01-01
  • 2011-02-21
  • 2016-06-17
  • 1970-01-01
  • 2020-01-05
  • 2021-11-12
  • 2021-08-25
相关资源
最近更新 更多