Surafel
Surafel

Reputation: 835

Regex to get parts of a string

all i am struggling to get sections of a string with regex without using Split or any other similar function here is my scenario:

I have this text U:BCCNT.3;GOwhich i want to get the different sections divided but the symbols in the middle I have managed to get the first one with this regex /(.+):/.exec(value) this gives me the first word till the colon(:) and these are the different variations of the value

Second section BCCNT

BCCNT.3;GO -> without the U: so the string might also contain no colon so for the second section the logic would be any text that is between : and . or any text ending with . and nothing infront

Third section .3-> any text starting with a . and ending with nothing or anytext staring with a . and ending with a ; semicolon

Fourth section ;GO-> any text starting with a ; and ending with nothing

EDIT and preferably on separate variables like

const sectionOne = regex.exec(value);
const sectionTwo = regex.exec(value);
const sectionThree = regex.exec(value);
const sectionFour = regex.exec(value);

and which ever value doesnt match the pattern the variable would just be undefined or null or any empty string

Upvotes: 0

Views: 101

Answers (2)

Tim Biegeleisen
Tim Biegeleisen

Reputation: 520968

Here is a regex approach using 4 separate optional capture groups for each possible component:

var input = "U:BCCNT.3;GO";
var re = /^([^:]+:)?([^.]+)?(\.[^;]+)?(;.*)?$/g;
var m;

m = re.exec(input);
if (m) {
    console.log(m[1], m[2], m[3], m[4]);
}

Upvotes: 1

MikeM
MikeM

Reputation: 13631

Something like

/^(?:([^:]*):)?([^.]*)\.(?:([^;]*);(.*))?/

For example:

const s = 'U:BCCNT.3;GO';
const m = s.match(/^(?:([^:]*):)?([^.]*)\.(?:([^;]*);(.*))?/);

console.log(m);

Upvotes: 0

Related Questions