var a = "[i] earned [c] coin for [b] bonus";
如何在JavaScript中从上面的变量中获取字符串“__ earned __ coin for __ bonus”?
我想做的就是将所有括号[]及其内容替换为__。
var a = "[i] earned [c] coin for [b] bonus";
a = a.replace(/\[.*?\]/g, '__');
如果你希望换行是可能的,那么可以使用:
a = a.replace(/\[[^\]]*?\]/g, '__');
以下是一个有趣的匹配组的示例。
var text = "[i] italic [u] underline [b] bold";
document.body.innerHTML = text.replace(/\[([^\]]+)\]/g, '(<$1>$1</$1>)');
/ // BEGIN pattern
\[ // FIND left bracket (literal) '['
( // BEGIN capture group 1
[ // BEGIN character class
^ // MATCH start anchor OR
\] // MATCH right bracket (literal) ']'
] // END character class
+ // REPEAT 1 or more
) // END capture group 1
\] // MATCH right bracket (literal) ']'
/ // END pattern
g // FLAG global search
*
不贪婪。 - alex*?
(正如Afrig指出的,这种情况下可以简化为*
,但我选择不这样做,因为使用它往往很危险,因为它可能替换比预期更多的内容)意味着先前的字符或类可以出现0次或多次。 因此,[^\]]*?
表示查找任何不是结束括号的内容任意次数。 我们使用它而不是仅仅使用.*?
,因为.
不会匹配换行符。 最后,\]
在结尾找到最后一个括号。 - Brett Zamir