如何在javascript中替换所有出现的“\\”字符串

时间:2015-01-09 21:46:24

标签: javascript regex replace

这似乎是一个非常简单的问题,但我还没有能够让它发挥作用。

如何转换以下字符串:

var origin_str = "abc/!/!";     // Original string
var modified_str = "abc!!";     // replaced string

我试过这个: console.log(origin_str.replace(/\\/,'')); 这只会删除第一次出现反斜杠。我想替换所有。我在SO中遵循了这条指令:How to replace all occurrences of a string in JavaScript?

origin_str.replace(new RegExp('\\', 'g'), '');

此代码会向我抛出错误SyntaxError: Invalid regular expression: /\/: \ at end of pattern。在javascript中删除backslash的正则表达式是什么。

2 个答案:

答案 0 :(得分:3)

JavaScript中正则表达式的快速基本概述

使用正则表达式时,您可以通过两种方式定义表达式。

  1. 使用/regular expression/
  2. 直接在函数或变量中
  3. 或者使用regExp构造函数:new RegExp('regular expression')
  4. 请注意两种定义方式的区别。在第一个搜索模式由forward slashes封装,而在第二个搜索模式中,搜索模式作为string传递。

    请记住,正则表达式实际上是一种具有自己语法的搜索语言。某些字符用于定义操作:/, \, ^, $, . (dot), |, ?, *, +, (, ), [, {, ', "。这些字符称为元字符,如果您希望它们成为搜索模式的一部分,则需要转义。如果不是,它们将被视为选项或生成脚本错误。使用反斜杠完成转义。例如。 \\转义第二个反斜杠,搜索模式现在将搜索反斜杠。

    您可以为搜索模式添加多种选项。:

    <强>实施例

    添加\d将使模式搜索[0-9]和/或下划线之间的数值。简单的正则表达式从左到右解析。

      

    / JavaScript的/

    在字符串中搜索单词javascript

      

    / [A-Z] /

    当图案放在方括号之间时,搜索模式会搜索与方括号内任何一个值匹配的字符。这会在d

    中找到229302d34330

    您可以使用多个块构建正则表达式。

      

    /(JAVA)|(EMCA)脚本/

    在字符串中查找javascript或emcascript。 |or运算符。

      

    / a / vs. / a + /

    第一个匹配a中的第一个aaabbb,第二个匹配重复a,直到找到另一个字符。所以第二场比赛:aaa

    加号+表示查找一次或多次。您也可以使用*,这意味着零次或多次。

      

    / ^ \ d + $ /

    我们之前见过\d和加号。这意味着找到一个或多个数字字符。 ^(插入符号)和$(美元符号)是新的。 ^表示从字符串的开头开始搜索,而$表示直到字符串结尾。此表达式将匹配:574545485 但不是 d43849343549854fff4348d8788

    <强>标志

    标志是运算符,在正则表达式/regular expression/flags之后声明 JavaScript有三个标志可以使用:

    • g(全局)搜索模式的倍数。
    • i(忽略大小写)忽略模式中的大小写。
    • m(多行)将开始和结束字符(^$)视为多行(即匹配每行的开头或结尾)(由{{分隔) 1}}或\n),不仅是整个输入字符串的开头或结尾)

    这样的正则表达式:

      

    / d [0-9] + / IG

    匹配\r中的D094938D344783

    98498D094938A37834D344783使搜索不区分大小写。由于模式中的i而匹配D。如果d后跟一个或多个数字,则匹配模式。 D标志命令表达式全局查找模式或简单地说:多次。


    在您的情况下,@Qwerty提供了正确的正则表达式:

    g

    搜索模式是单个正斜杠origin_str.replace(/\//g, "") 。通过反斜杠转义以防止脚本错误。 /标志命令replace函数在字符串中搜索所有出现的正斜杠,并用空字符串g替换它们。

    有关综合教程和参考:http://www.regular-expressions.info/tutorial.html

答案 1 :(得分:1)

寻找这个?

origin_str.replace(/\//g, "")

替换的语法是

.replace(/pattern/flags, replacement)

所以在我的情况下,模式是\/ - 一个转义斜杠 而g是全球旗帜。