【发布时间】:2019-01-28 19:08:04
【问题描述】:
我正在尝试使用正则表达式在我的反应组件中查找和替换 cmets 之间的所有文本。
这是一个带有 cmets 的 react 组件示例:
<Text>{/*text1*/}hey hey hey{/*text1*/}</Text>
如果我将{/*text1*/} 更改为{text1},我可以替换文本。问题是每当我尝试将评论的/* */ 部分添加到我的正则表达式中时,它都会不断添加额外的反斜杠。
如果我从组件的注释中删除 /* 和 */,以下是我当前的功能:
async function doIt(fileName, location, replacementText) {
let tempRegex = "(?<={" + location + "})(.*)(?={" + location + "})"
let regex = new RegExp(tempRegex)
await fs.readFile(path.join(__dirname, fileName), 'utf8', function (err, data) {
if (err) throw err
content = data
content = content.replace(regex, replacementText)
fs.writeFile(path.join(__dirname, fileName), content, 'utf8', function (err) {
if (err) throw err
console.log('FILE SAVED')
})
})
}
doIt('change.js', "text1", 'test test')
我的想法是将我的 tempRegex 更改为:
"(?<={/*" + location + "*/})(.*)(?={/*" + location + "*/})"
但它不断添加额外的字符,看起来像这样:
/(?<={\/*textBox1*\/})(.*)(?={\/*textBox1*\/})/
有没有办法在不添加额外反斜杠的情况下添加正斜杠?
【问题讨论】:
-
它不加反斜杠,这只是为了打印。
-
正斜杠在正则表达式中有意义,所以如果你想搜索一个正斜杠,你需要转义它们。这就是反斜杠的作用。
标签: javascript regex reactjs