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;GO
which 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
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
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
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
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]); }
Something like
/^(?:([^:]*):)?([^.]*)\.(?:([^;]*);(.*))?/
For example:
const s = 'U:BCCNT.3;GO'; const m = s.match(/^(?:([^:]*):)?([^.]*)\\.(?:([^;]*);(.*))?/); console.log(m);
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.