JavaScript-在RegExp中用“ /”替换“ \”字符的正确方法是什么

MiT

我的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 = "-|_|@|#|\\$|\\\\";

您必须为模式避免一次斜杠,因此它将尝试匹配文字字符:

\\

然后,再次为字符串文字转义每个斜杠:

"\\\\"

另请注意,我为添加了转义符$要从字面上匹配美元符号,也必须对其进行转义,因为它通常代表“行/字符串结尾”锚点


您还可以使用正则表达式文字来避免使用字符串,仅使用模式必需的转义序列:

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

而且,由于仅匹配单个字符,因此可以使用字符类代替替代字符

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

(请注意-这里的位置。可以作为类中的第一个字符使用,但是放在中间时可以表示一个字符范围。也可以对其进行转义以确保它不表示范围。)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在JavaScript中用计数器替换字符串并递增计数器的最佳方法是什么?

REGEXREPLACE中用匹配的字符串替换的替换是什么?

如何用regexp_replace在mysql中用特定字符替换多个字符?

字符串在JavaScript数组中用逗号替换“ <br>↵”

Javascript-RegExp在替换中返回匹配的字符串

如何在JavaScript中使用regexp替换字符串

通过regexp在Javascript中按组替换字符串

Javascript-RegExp-替换不被字母包围的字符

在flutter中用参数推动替换的最佳方法是什么?

JavaScript RegExp替换HTML注释

奇怪的javascript regexp替换问题

RegExp:JavaScript 中的 $$$1 替换

Javascript Regexp根据掩码替换

在sqlite3中用REGEXP替换字符串的一部分

在perl中用字符串中的空格替换非数字字符的更简单方法是什么?

在字符串中用(+)替换

在字符串中用`-`替换`_`

如何在Javascript中用递归替换循环?

如何在Javascript中用逗号替换逗号

如何在javascript中用ID替换名称

在 JavaScript 中用 N/A 替换空记录

在JavaScript中用$ _SERVER ['REQUEST_URI']替换

在JavaScript中用匿名替换命名函数

在输入Javascript中用点替换逗号

Hive - 在 regexp_replace 中用 $ 替换时出错

如何在JavaScript中用字符串替换首次出现的字符?

格式为yyyy / mm / dd的本地日期字符串在JavaScript中用dd替换mm

如何在 JavaScript 中的公式中用字符串替换整数

如何在JavaScript中用“”(空格)替换字符串中所有长度小于3的单词?