【发布时间】:2022-11-20 05:50:44
【问题描述】:
我需要使用正则表达式值替换来替换两个字符串,所以生成的字符串是$?tlang=es&text=Hello world,所以我不知道在这里使用String.prototype.replace()。
const value = "Hello world"
const queryString = "?tlang=es&text=$1"
在这个场景中,value 和 queryString 是硬编码的,但在“现实生活”中,它应该是正则表达式组捕获的结果,如 line.match(/msgid \"(.*)\"/),其中 line 是重复的文本行,而 queryString是用户提交的内容。
我以为我可以做到这一点,但也许在有更好的解决方案(我找不到)的地方需要付出太多努力:
const line = "Full name: John Doe" // text input
const sourcePattern = /Full name: (.*) (.*)/ // user input
let queryString = 'name=$1&lname=$2' // user input
const matches = line.match(sourcePattern)
matches.splice(0, 1)
for (let i = 0; i < matches.length; i++) {
queryString = queryString.replace(`\$${i+1}`, matches[i])
}
有任何想法吗?
【问题讨论】:
标签: javascript regex