这似乎是一个非常简单的问题,但我还没有能够让它发挥作用。
如何转换以下字符串:
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
的正则表达式是什么。
答案 0 :(得分:3)
使用正则表达式时,您可以通过两种方式定义表达式。
/regular expression/
new RegExp('regular expression')
。请注意两种定义方式的区别。在第一个搜索模式由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
但不是 d43849343
,549854fff
或4348d8788
。
<强>标志强>
标志是运算符,在正则表达式/regular expression/flags
之后声明
JavaScript有三个标志可以使用:
g
(全局)搜索模式的倍数。i
(忽略大小写)忽略模式中的大小写。m
(多行)将开始和结束字符(^
和$
)视为多行(即匹配每行的开头或结尾)(由{{分隔) 1}}或\n
),不仅是整个输入字符串的开头或结尾)这样的正则表达式:
/ d [0-9] + / IG
匹配\r
中的D094938
和D344783
。
98498D094938A37834D344783
使搜索不区分大小写。由于模式中的i
而匹配D
。如果d
后跟一个或多个数字,则匹配模式。 D
标志命令表达式全局查找模式或简单地说:多次。
在您的情况下,@Qwerty提供了正确的正则表达式:
g
搜索模式是单个正斜杠origin_str.replace(/\//g, "")
。通过反斜杠转义以防止脚本错误。 /
标志命令replace函数在字符串中搜索所有出现的正斜杠,并用空字符串g
替换它们。
答案 1 :(得分:1)
寻找这个?
origin_str.replace(/\//g, "")
替换的语法是
.replace(/pattern/flags, replacement)
所以在我的情况下,模式是\/
- 一个转义斜杠
而g
是全球旗帜。