我正在处理像[enclosed str]outer str[enclosed str]
这样的字符串格式
我正在尝试匹配所有[enclosed str]
。
问题在于,我希望任何字符除了非]
的非转义版本(]
前面没有\
)都在方括号内。
例如
str = 'string[[enclosed1\\]]string[enclosed2]';
// match all [ followed by anything other ] then a ]
str.match(/\[[^\]]+]/g)
// returns ["[[enclosed1\]", "[enclosed2]"]
// ignores the `]` after `\\]`
// match word and non-word char enclosed by []
str.match(/\[[\w\W]+]/g)
// returns ["[[enclosed1\]]string[enclosed2]"]
// matches to the last ]
// making it less greedy with /\[[\w\W]+?]/g
// returns same result as /\[[^\]]+]/g
在Javascript RegExp中是否可以实现我想要的结果
["[[enclosed1\]]", "[enclosed2]"]
答案 0 :(得分:1)
使用javascript中的正则表达式不支持负面的背后,这是我能想到的最好的:
/(?:^|[^\\])(\[.*?[^\\]\])/g
第1组将包含您想要的字符串。