JavaScript,尝试删除RegExp对象,但不工作[关闭]

dldeef67  于 2023-06-30  发布在  Java
关注(0)|答案(1)|浏览(98)

**已关闭。**此问题为not reproducible or was caused by typos。目前不接受答复。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question
下面是JavaScript中的原始代码

let input = TIMOR-LESTE
let output = Timor-Leste (good)

input = input.replace(new RegExp('(?:\\b|_)([a-z])', 'g'), function(
char
) {
    return char.toUpperCase();
});

我尝试删除RegExp并使用Reg literal

let input = TIMOR-LESTE
let output = Timor-leste (bad)

input = input.replace(/(?:\\b|_)([a-z])/g, function(
char
) {
    return char.toUpperCase();
});

不知何故,原来的new RegExp('(?:\\b|_)([a-z])', 'g')能够用连字符大写每个第一个字符。
你知道这是怎么回事吗

9o685dep

9o685dep1#

你还有一个代码\正确的代码如下:

input = input.replace(/(?:\b|_)([a-z])/g, function(
char
) {
    return char.toUpperCase();
});

/(?:\\b|_)([a-z])/g => /(?:\b|_)([a-z])/g
这是因为RegExp构造函数的参数是普通字符串,每个\需要额外的\进行转义

相关问题