Javascript 为什么我的正则表达式不';不能替换多次出现?
我想用JavaSript中的regex从字符串中删除“[[”和“]]”(我知道用simple replace很容易做到,但这不是我想要的) 结果字符串是Javascript 为什么我的正则表达式不';不能替换多次出现?,javascript,regex,Javascript,Regex,我想用JavaSript中的regex从字符串中删除“[[”和“]]”(我知道用simple replace很容易做到,但这不是我想要的) 结果字符串是abc def]]ghi[[jkl mno而不是abc def ghi jkl mno我能做什么 str = str.replace(/\[\[(.*?)\]\]/g, "$1"); 使您的*不贪婪。或 [\[\]]+ 用空字符串简单替换此项。您可以更简单地执行此操作: str = str.replace(/[\[\]]/g, "");
abc def]]ghi[[jkl mno
而不是abc def ghi jkl mno
我能做什么
str = str.replace(/\[\[(.*?)\]\]/g, "$1");
使您的*
不贪婪。或
[\[\]]+
用空字符串
简单替换此项。您可以更简单地执行此操作:
str = str.replace(/[\[\]]/g, "");
var str=“abc[[def]]ghi[[jkl]]mno”;
str=str.replace(/[\[\]]/g,”);
警报(str)
正则表达式
/\[\[(.*)\]\]/
实际上是说,从[[
开始,匹配尽可能多的字符(因为*
),直到你看到]
,所以它实际上匹配字符串
[[def]]ghi[[jkl]]
并将其替换为[[
和]
之间的匹配字符,即def]]ghi[[jkl
,因为这是最大可能的匹配。这就是您获得
abc def]]ghi[[jkl mno]
因此,要解决这个问题,您需要使*
像这样非贪婪
str = str.replace(/\[\[(.*?)\]\]/g, "$1");
现在,
?
使*
尽可能少地匹配。因此,它首先匹配,[[def]]
并用def
替换它,然后匹配[[jkl]]
并用jkl替换它。您也可以简单地尝试一下
> var str = "abc [[def]] ghi [[jkl]] mno";
> str.replace(/\[\[|\]\]/g, "")
'abc def ghi jkl mno'
上面的正则表达式将匹配[[
或]
符号。用空字符串替换匹配的字符将获得所需的输出。使用非贪婪版本:/\[\[(.*?\]\]]/g
> var str = "abc [[def]] ghi [[jkl]] mno";
> str.replace(/\[\[|\]\]/g, "")
'abc def ghi jkl mno'