使用正则表达式和多个匹配字符串的Javascript替换功能

时间:2018-06-21 20:59:22

标签: javascript regex

我下面有这个字符串

__setitem__

我正在尝试用空格替换所有[01]ABC0007[0d0a]BB BABLOXC[0d0a]067989 PLPXBNS[0d0a02]BBR OIC002 L5U0/P AMD KAP 041800 T1200AND 2+00[0d0a0b03]

我尝试过的。

[..]

仅此而已。

return this.text.replace(new RegExp('[0d0a] | [0d0a02] | [0d0a02]' ) ,  ' ')
return this.text.replace(new RegExp('\[0d0a\] | \[0d0a02\] | \[0d0a02\]' ) ,  ' ')

here中的帖子涉及多个步骤。这将用作 mongo 查询的 Bson 过滤器的'javascript'字符串输入,因为mongo尚不具备 REPLACE 功能,例如SQL有。有一个open请求。

2 个答案:

答案 0 :(得分:2)

您需要使用方括号\[\]。另外,您可以检查方括号之间的内容(非贪婪):\[.*?\]

let string = `[01]ABC0007[0d0a]BB BABLOXC[0d0a]067989 PLPXBNS[0d0a02]BBR OIC002 L5U0/P AMD KAP 041800 T1200AND 2+00[0d0a0b03]`;

let replaced = string.replace(/\[.*?\]/g, ' ');

console.log(replaced);

答案 1 :(得分:0)

例如,如果要匹配\[,则必须逃脱左括号[0d0a]。在第二个正则表达式中,您必须删除|前后的空格,因为它具有含义。

您的正则表达式如下:

\[0d0a]|\[0d0a02]|\[0d0a02]

let str = "[01]ABC0007[0d0a]BB BABLOXC[0d0a]067989 PLPXBNS[0d0a02]BBR OIC002 L5U0/P AMD KAP 041800 T1200AND 2+00[0d0a0b03]";
console.log(str.replace(/\[0d0a]|\[0d0a02]|\[0d0a02]/g, ' '));

如果您希望从开始到结束都匹配所有内容,可以使用:

\[[^\]]+]

这将从[]匹配,并且匹配使用否定的字符类[^[]+之间的匹配,而否定的字符类将不匹配]一次或多次。

let str = "[01]ABC0007[0d0a]BB BABLOXC[0d0a]067989 PLPXBNS[0d0a02]BBR OIC002 L5U0/P AMD KAP 041800 T1200AND 2+00[0d0a0b03]";
console.log(str.replace(/\[[^\]]+]/g, ' '));