-1

I have two variants of string:

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

I'm trying to get values from brackets (vinCode, V1234567890123456). Currently I have such regular expression:

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

But it gets values with "", e.g ("vinCode", vinCode, V1234567890123456).

Is it possible to create expression which can get values always without ""?

1 Answers1

1

You could add an optional match of " in the look-behind part, and then require that the next character is not an ". The closing quote can be matched with a back-reference to the captured first quote:

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));
}

Note: this regex will not match an empty string in quotes: ("")

trincot
  • 317,000
  • 35
  • 244
  • 286