如何在nodejs中获取正则表达式匹配的字符串

时间:2018-03-15 04:40:55

标签: javascript node.js

我有一个问题。我有一个包含模式的字符串,如果字符串包含该模式,那么它应该存储在变量中。

var pattern = new RegExp(/@([0-9]+)/i);
if(pattern.test('@2 ajshfd @32 asd')
// here i need to store the matched string inside a variable and replace it with another string.

例如: - 输入: - @ 2 ajs @ 32 hfdasd输出: - 你好ajs你好hfdasd

需要帮助。提前谢谢。

3 个答案:

答案 0 :(得分:0)

编辑:根据问题更改进行更新
您可以尝试两个步骤,首先是exec,然后是replace

let pattern = new RegExp(/@(\d+)/i)
let str = '@2 ajshfd @32 asd'

let arrOld = []
let arrNew = ['Hi', 'hello']

let m
do {
  m = pattern.exec(str)
  if (m) {
    arrOld.push(m[1])
    str = str.replace(pattern, arrNew.shift())
  }
} while (m)

console.log(arrOld)
console.log(str)

答案 1 :(得分:0)

如果字符串与您的模式匹配,您可以使用 ']' 将其拆分。这将创建一个数组。您可以在该数组中获取第二个值,并将 ' Hi' 附加到其中。



var pattern = new RegExp(/@\[([0-9]+)\]/i);

var str = '@[2] ajshfdasd';
if(pattern.test(str)){ 
  var name = 'Hi ' + str.split(/\] /)[1];
  console.log(name)
}




答案 2 :(得分:-1)

不清楚你想要做什么。但是你读过有关String.prototype.replace()的内容吗?也许你可以在学习的过程中找到答案。