我有一个问题。我有一个包含模式的字符串,如果字符串包含该模式,那么它应该存储在变量中。
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
需要帮助。提前谢谢。
答案 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()的内容吗?也许你可以在学习的过程中找到答案。