gpt4 book ai didi

JavaScript RegEx 在 eval 和 non-eval 之间的行为不同

转载 作者:行者123 更新时间:2023-12-02 21:09:11 25 4
gpt4 key购买 nike

有人可以解释一下为什么以下两个相同的正则表达式在“静态”或动态运行时会返回不同的结果吗?我应该添加一些转义字符吗?

let arr = []
let re = /(\w+)\s(\w+)/
let str = 'John Smith'
let newstr = str.replace(re, '$2, $1')
arr.push(newstr)

let code=`
let re = /(\w+)\s(\w+)/
let str = 'John Smith'
let newstr = str.replace(re, '$2, $1')
newstr
`
arr.push(eval(code))
arr

输出:

[
"Smith, John",
"John Smith"
]

最佳答案

确切地说,你必须逃避 baskslashes

const arr = [];
const re = /(\w+)\s(\w+)/;
const str = 'John Smith';
const newstr = str.replace(re, '$2, $1');

arr.push(newstr) ;

const code=`
const re = /(\\w+)\\s(\\w+)/;
const str = 'John Smith';
const newstr = str.replace(re, '$2, $1');
newstr;
`
arr.push(eval(code));

console.log(arr);

关于JavaScript RegEx 在 eval 和 non-eval 之间的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61147010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com