我有以下JavaScript:
let strTest = `
"The issue": "L'oggetto ",
"issue": "oggetto",
"issue": 'oggetto "novo" ',
`;
我正在尝试像上面那样标记字符串。
我的正则表达式尝试:
let regExp = /["'](.*?)["']\s*?:\s*?['"](.*?)["']/gm;
这样可以正常工作,除非我在双引号(“)中有一对单引号('),反之亦然。
只有一个正则表达式可以实现吗?
答案 0 :(得分:0)
答案 1 :(得分:-2)
您可以使用反向引用:
/(["'])(.*?)\1\s*?:\s*?(['"])(.*?)\3/gm
这将在标记化字符串中包含引号,但您可以通过仅使用偶数编号的标记将其从生成的匹配中删除。
修改强>
正如@TJ Crowder指出的那样,如果字符串在字符串中包含\"
形式的转义引号,则无法正常工作。为了完全容纳那些转义的引号而不是像\\"
这样的字符串(在引号之前的转义反斜杠)中断,你将需要使用多个正则表进行解析或采取不同的策略
您可能想要查看的另一件事,如果这是来自JSON,则忽略正则表达式,只是迭代json对象的属性。这取决于你得到的字符串是否作为有效的json进入。