用于排除[](方括号内)字母的正则表达式

时间:2016-02-24 14:52:43

标签: regex

我正在尝试使用正则表达式从KEY PAIR VALUE中找到VALUE。 VALUE可以有[](方括号)。如果VALUE中存在[](方括号),那么我只想提取[]之外的字符。

所以目标字符串可以如下:

   key="val"  or  key="[val_notRequired1]val"  or  key="[val_notRequired1][val_notRequired2]val"

我最初使用的模式:

key=("[^"]*"|'[^']*')

提取" "内的所有字符。所以我尝试在我的模式中添加一个非捕获组(?:[\[][^*][\]])来逃避特殊字符[ ]。但结果仍然相同。我接近了吗?

如何在所有情况下仅提取val? 我在javascript中使用正则表达式。

感谢。

2 个答案:

答案 0 :(得分:4)

也许这个:

key="(?:\[.*?\])*(.*?)"

它查找key =“然后查找[...]的任意数量的块,并捕获字符串的其余部分。

有效,请参阅http://regexr.com/3cse1。您可以将鼠标悬停在项目上,以便每次都能看到“val”的捕获。

答案 1 :(得分:1)

或者,根据您执行此操作的上下文,您可以replace(/\[.*?\]/g, '') - 然后剩下的是val



key = "[val_notRequired1][val_notRequired2]val";

val = key.replace(/\[.*?\]/g, '');
console.log(val);