gpt4 book ai didi

Javascript:奇怪的 RegExp 行为

转载 作者:行者123 更新时间:2023-11-29 18:13:01 26 4
gpt4 key购买 nike

我收到结果:

_a_b_|_c_d_

使用以下代码/正则表达式时:

var separator = "|";
var ex = new RegExp(separator,"g");
var result = "ab|cd".replace(ex, "_");

console.log(result);

为什么会这样?

我希望(也希望)只替换字符串中的所有管道:

ab_cd

最佳答案

您应该在正则表达式中转义 | 符号,以便它匹配文字 | 符号。在正则表达式中 | 称为逻辑 OR 运算符,通常用于组合或或两个正则表达式。

输出 _a_b_|_c_d_ 的原因是什么?

我已经说过 | 被称为逻辑 OR 运算符。它的语法类似于 regex1|regex2|regex3|regex4...... 等等。但在您的情况下 |,OR (|) 运算符前后没有模式。所以它对每个字符前后进行零宽度匹配。用 _ 替换零宽度匹配会给你 _a_b_|_c_d_ 作为结果。

> var separator = "\\|";
undefined
> var ex = new RegExp(separator,"g");
undefined
> var result = "ab|cd".replace(ex, "_");
undefined
> console.log(result);
ab_cd

> var separator = /\|/g;
undefined
> var ex = new RegExp(separator);
undefined
> var result = "ab|cd".replace(ex, "_")
undefined
> console.log(result);
ab_cd

关于Javascript:奇怪的 RegExp 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25642755/

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