gpt4 book ai didi

javascript - Nodejs 可选正则表达式命名组的插件或代码片段

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:12 24 4
gpt4 key购买 nike

字符串行

line 1 = [A B C]
line 2 = [A C]
line 3 = [B C]

正则表达式

/\[?(?<groupA>[A])?(?:[ ]*)?(?<groupB>[B])?(?:[ ]*)?(?<groupC>[C])\]/gm

如何使用插件或代码片段实现以下行为?

第 1 行

result.groupA = A
result.groupB = B
result.groupC = C

第 2 行

result.groupA = A
result.groupB = null/undefined
result.groupC = C

第 3 行

result.groupA = null/undefined
result.groupB = B
result.groupC = C

我尝试过named-js-regexp npm包,但是该包依赖于

var matched = RegExp.prototype.exec.call()

返回一个匹配项,其中未定义/未匹配组的位置无法识别。

https://regex101.com/r/aD2sZ3/1 上找到的实现不过效果很好。注意:由于捆绑的正则表达式缺少对命名组的支持,regex101 生成的 JavaScript 代码在 NodeJS 中不起作用。

更新:XRegExp 包按预期工作于此目的。我们还可以使用下面答案中的解决方案,然后手动枚举“命名”捕获。

最佳答案

为什么不直接删除群组名称呢?然后检查索引缺少什么。

var re = /\[?([A])?(?:\s*)?([B])?(?:\s*)?([C])\]/gm; 
var str = '[C]';
var m;

while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
if (m[1] == null){
console.log('Missing A');
};
if (m[2] == null){
console.log('Missing B');
};
if (m[3] == null){
console.log('Missing B');
};
}

关于javascript - Nodejs 可选正则表达式命名组的插件或代码片段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35882515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com