gpt4 book ai didi

JavaScript - 在 RegEx 中用 "\"替换 "/"字符的正确方法是什么

转载 作者:数据小太阳 更新时间:2023-10-29 04:38:24 25 4
gpt4 key购买 nike

我在 JavaScript 中定义了一个函数来替换所有的 -, _, @, #, $\(它们是可能的分隔符)和 /(有效分隔符)。

我的目标是将任何字符串如 "1394_ib_01#13568" 转换为 "1394/ib/01/13568"

function replaceCharacters(input) {

pattern_string = "-|_|@|#|$|\u005C"; // using character Unicode
//pattern_string = "-|_|@|#|$|\"; // using original character
//pattern_string = "-|_|@|#|$|\\"; // using "\\"
//pattern_string = "\|-|_|@|#|$"; // reposition in middle or start of string
pattern = new RegExp(pattern_string, "gi");

input = input.replace(pattern, "/");
return input;
}

我的问题是当发送到函数结果的带有 \ 字符的字符串无效时。

我尝试在定义模式中使用 \ 的 Unicode,或者使用 \\\ 代替它。我还替换了它在模式字符串中的位置。但在任何一种情况下,问题都没有解决,浏览器返回无效结果或不同的错误,例如:

SyntaxError: unterminated parenthetical    ---> in using "\u005C"
SyntaxError: \ at end of pattern ---> in using "\\"
Invalid Result: broken result in 2 Line or replace with undefined character based on input string (the character after "\" determine result)
---> in reposition it in middle or start of pattern string

最佳答案

var pattern_string = "-|_|@|#|\\$|\\\\";

你必须为模式转义一次斜杠,所以它会尝试匹配文字字符:

\\

然后,再次对字符串文字的每个斜线进行转义:

"\\\\"

另请注意,我为 $ 添加了一个转义符。要从字面上匹配美元符号,它也需要转义,因为它通常表示 anchor。对于“行尾/字符串”。


您还可以使用 Regex literal为了避免字符串,仅使用模式所需的转义序列:

var pattern = /-|_|@|#|\$|\\/gi;

而且,由于您只匹配单个字符,您可以使用 character class而不是 alternation :

var pattern = /[-_@#\$\\]/gi;

(请注意此处 - 的位置。它作为类中的第一个字符很好,但放在中间时可以表示一系列字符。您也可以将其转义以确保它不代表一个范围。)

关于JavaScript - 在 RegEx 中用 "\"替换 "/"字符的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33453624/

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