gpt4 book ai didi

javascript - string.replace() 与 global (g) 不以奇怪的方式工作

转载 作者:行者123 更新时间:2023-11-28 19:51:49 26 4
gpt4 key购买 nike

我正在尝试使用 javaScript 的 .replace 函数来替换字符串中的方括号,但它不起作用。我的代码:

var str = document.getElementById('string-input-field').value;
str = str.replace(/[/g, '[').replace(/]/g, ']');

奇怪的是,它没有给出任何错误,而是只替换了几个字母,而不是替换 [ 和 ] 。例如,如果我尝试这样做:

var str = 'abcdefghijklmnopqrstuvwxyz';
str = str.replace(/[/g, '6').replace(/]/g, '6');

我得到“6b6d6f6hijk6mno6q6stuvwxyz”。因此字母“a c e g l p r”正在被替换。我还尝试将变量设置为简单的字符串,如上面所示,并通过从输入字段获取值,但仍然是同样的问题。

请让我知道出了什么问题,或者是否有其他方法可以实现同样的目标。

诗。我正在本地主机上工作,并且此页面正在 WordPress 的管理区域中加载(post.php - 编辑页面)。

更新

我在 @p.s.w.g 回答后尝试了以下操作:

str = 'aaaaa[bbbbbb]ccccc';
str = str.replace(/\[/g, '[').replace(/]/g, ']');

我得到了同样的回复:aaaaa[bbbbbb]ccccc。然而,老问题已经解决,就像 @p.s.w.g 所说的那样。有什么想法吗?

最佳答案

[ 是正则表达式中的一个特殊字符,它开始一个字符类,一直持续到遇到 ]。解析器将所有 [/g, '6').replace(/] 视为字符类。字符类将匹配任何字符(或括号内指定的字符范围)。在此大小写表示任何 /g、(空格)、'6).replac(,字符。

尝试像这样转义 [ 字符(请注意,没有必要转义 ] 因为它不是特殊字符,除非它是字符类的一部分):

str = str.replace(/\[/g, '[').replace(/]/g, ']');

例如:

var str = "[foo] [bar]";
str = str.replace(/\[/g, '[').replace(/]/g, ']');
console.log(str); // "[foo] [bar]"
<小时/>

关于您的更新,您使用的任何工具都可能会默默地将 [] 转换回 []。如果是这种情况,您可能还需要转义 & 以避免出现这种情况:

str = str.replace(/\[/g, '&amp;#91;').replace(/]/g, '&amp;#93;');

但在其他情况下这可能会失败,最好使用如下替换方法:

str = str.replace(/\[|]/g, function(c) { 
return '&#' + c.charCodeAt(0) + ';'
});

关于javascript - string.replace() 与 global (g) 不以奇怪的方式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23316948/

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