如何使用正则表达式提取字符串分段,不使用Split等同类拆分函数
正则提取多分段实现方案
匹配规则说明
使用单条包含4个可选捕获组的正则即可一次性完成所有分段匹配,无需调用拆分类函数,完全符合需求。
所用正则如下:/^(?:([^:]+):)?([^:.]+)?(\.[^;]*)?(;.*)?$/
各捕获组对应需求的分段规则:
- 第1个捕获组:匹配冒号
:之前的内容,对应第一分段,无匹配时返回undefined - 第2个捕获组:匹配冒号后到点
.之间/无冒号时开头到点.之前的内容,对应第二分段 - 第3个捕获组:匹配点
.开头到分号;前/结尾的内容,对应第三分段 - 第4个捕获组:匹配分号
;开头到结尾的内容,对应第四分段
代码实现
const matchRegex = /^(?:([^:]+):)?([^:.]+)?(\.[^;]*)?(;.*)?$/; // 待匹配字符串存放在value变量中 const matchResult = matchRegex.exec(value); const sectionOne = matchResult ? matchResult[1] : undefined; const sectionTwo = matchResult ? matchResult[2] : undefined; const sectionThree = matchResult ? matchResult[3] : undefined; const sectionFour = matchResult ? matchResult[4] : undefined;
效果验证
以示例文本U:BCCNT.3;GO测试,各变量返回结果:
- sectionOne = "U"
- sectionTwo = "BCCNT"
- sectionThree = ".3"
- sectionFour = ";GO"
若对应分段不存在,变量自动返回undefined,符合要求。
内容的提问来源于stack exchange,提问作者Surafel
相关产品推荐
相关产品推荐

