JavaScript正则表达式无法匹配分隔符内内容的问题求助
解决JavaScript正则捕获
["和"]之间内容的问题 先看你原来代码的问题:
- 第一种用
RegExp构造函数的写法:字符串里的反斜杠需要双重转义,你写的\[其实只转义了一次,在构造函数里应该写成\\[和\\];另外你打印的是match[0],这是整个匹配的完整字符串,不是你要的捕获组内容;全局标志g在这里完全没必要,反而会干扰单次匹配的结果。 - 第二种字面量正则写法有语法错误,结尾多了个多余的双引号
",直接导致代码报错。
正确的两种写法:
1. 正则字面量(推荐,更直观)
直接写正则,不需要额外转义反斜杠,用非贪婪匹配.*?避免匹配到多余内容:
let myStr = '{"ReportParameters":["This is for a special client."]}'; const myRegex = /\["(.*?)"\]/; const match = myRegex.exec(myStr); if (match) { console.log(match[1]); // 输出:This is for a special client. }
2. RegExp构造函数写法
注意字符串里的反斜杠要转义两次,变成\\:
let myStr = '{"ReportParameters":["This is for a special client."]}'; const myRegex = new RegExp('\\["(.*?)"\\]'); const match = myRegex.exec(myStr); if (match) { console.log(match[1]); // 输出:This is for a special client. }
补充说明:
- 用
.*?而非.*是因为.*是贪婪匹配,如果字符串里有多个"],会匹配到最后一个,非贪婪模式会匹配到第一个出现的"],更符合你的需求。 - 如果你的字符串是标准JSON格式,其实也可以直接解析成对象来取值,比正则更可靠:
let myStr = '{"ReportParameters":["This is for a special client."]}'; const obj = JSON.parse(myStr); console.log(obj.ReportParameters[0]); // 输出:This is for a special client.
内容的提问来源于stack exchange,提问作者Mark Johnson
相关产品推荐
相关产品推荐

