0

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

2 Answers 2

1

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

Sign up to request clarification or add additional context in comments.

2 Comments

Okay this seems about right but if my input is this for example var input = "U:BCCNT;GO"; i get m[1]=U: m[2]=BCCNT;GO->should be only BCCNT m[3]=undefined->correct because we dont have .3 m[4]=undefined->should have been ;GO
You may need some other logic in addition to regex. If a regex group doesn't match it won't be available.
0

Something like

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

For example:

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

console.log(m);

2 Comments

@Surafel Now you're tacking on extras. My answer is for the original question. I have to step away from the computer now, unfortunately.
Oh okay sorry, which one is the separator from this regex maybe i can separte them myself /^(?:([^:]*):)?([^.]*)\.(?:([^;]*);(.*))?/

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.