我试图使用String.prototype.match方法否定javascript正则表达式中的结束方括号,并返回null。
代码示例。
// trying to match [value]
// expected regex to match a [ followed by one or more character except ] then a ].
"text[value]".match(/\[[^]]+\]/);
// returns null
答案 0 :(得分:1)
始终在JS正则表达式字符类中跳过结束]
(请注意,]
外部字符类不必转义为文本]
):
console.log("text1[value1]".match(/\[[^\]]+\]/));
console.log("text1[value2]".match(/\[[^\]]+]/));
console.log("text1[value2\\value3]".match(/\[[^\]]+]/));
否则,它会过早地关闭字符类,并可能导致您拥有的问题。您的\[[^]]+\]
模式与[
匹配,那么任何char(如[^]
是JS中的有效构造,匹配任何字符,包括换行符和CR),然后是1个或多个字面{{1} }}符号(作为字符类之外的]
不必转义,然后]
。请参阅]
中找到匹配项的your regex demo。