我正在努力获得一个字符串的部分与regex不使用分割或任何其他类似的功能,这是我的场景:
我有这个文本U:BCCNT.3;GO
,我想把不同的部分分开但是中间的符号我已经设法用这个正则表达式/(.+):/.exec(value)
得到了第一个,这给了我第一个单词,直到冒号(:)这些是值
的不同变化第二段BCCNT
BCCNT.3;GO
->没有U:
所以字符串可能也不包含冒号所以对于第二部分,逻辑将是any text that is between : and . or any text ending with . and nothing infront
第三部分.3
→any text starting with a . and ending with nothing or anytext staring with a . and ending with a ; semicolon
第四部分;GO
→any text starting with a ; and ending with nothing
编辑最好是单独的变量,比如
const sectionOne = regex.exec(value);
const sectionTwo = regex.exec(value);
const sectionThree = regex.exec(value);
const sectionFour = regex.exec(value);
和任何值不匹配的模式变量将只是undefined
或null或任何空字符串
下面是一个使用4个单独的可选捕获组的regex方法:
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]);
}
类似
/^(?:([^:]*):)?([^.]*).(?:([^;]*);(.*))?/
例如:
const s = 'U:BCCNT.3;GO';
const m = s.match(/^(?:([^:]*):)?([^.]*).(?:([^;]*);(.*))?/);
console.log(m);