通过正则表达式(JavaScript)从括号中获取值



我有两个字符串的变体:

Key ("vinCode")=(V1234567890123456) some text.
Key (vinCode)=(V1234567890123456) some text.

我试图从括号中获取值(vinCode, V1234567890123456)。目前我有这样的正则表达式:

(?<=().*?(?=))

但它获得""的值,例如("vinCode" vinCode, V1234567890123456)。

是否有可能创建一个表达式,它可以得到的值总是没有""?

您可以在后面的部分添加"的可选匹配,然后要求下一个字符不是"。结束引号可以与捕获的第一个引号的反向引用匹配:

let regex = /(?<=((")?)(?!").*?(?=1))/g;
let tests = [
'Key ("vinCode")=(V1234567890123456) some text.',
'Key (vinCode)=(V1234567890123456) some text.'
];
for (let test of tests) {
console.log(test.match(regex));
}

注意:这个正则表达式将不匹配引号中的空字符串:("")

最新更新