我的正则表达式匹配一个字符串,如tab或逗号和冒号之间。
我应该如何修改这个正则表达式以排除
这会返回一个字符串:app_open_icon: 我想让正则表达式去掉附加的(?<=\t|,)([a-z].*?)(:)
:
,只返回app_open_icon。我应该如何修改这个正则表达式以排除
:
?这会返回一个字符串:app_open_icon: 我想让正则表达式去掉附加的(?<=\t|,)([a-z].*?)(:)
:
,只返回app_open_icon。:
?(?<=\t|,)[a-z].*?(?=:)
。
const regex = /(?<=\t|,)[a-z].*?(?=:)/;
const text='Lorem ipsum dolor sit amet,app_open_icon:consectetur adipiscing...';
const result = regex.exec(text);
console.log(result);
您不必使用预测界定符,可以使用捕获组。
[\t,]([a-z][^:]*):
[\t,]
匹配制表符或逗号(
捕获 组 1
[a-z][^:]*
匹配范围在 a-z 的字符,后跟 0 次或多次非 :
的任意字符)
关闭组 1:
字符串匹配const regex = /[\t,]([a-z][^:]*):/;
const str = `,app_open_icon:`;
const m = str.match(regex);
if (m) {
console.log(m[1]);
}
(?<=[\t,])[a-z][^:]*(?=:)
const regex = /(?<=[\t,])[a-z][^:]*(?=:)/;
const str = `,app_open_icon:`;
const m = str.match(regex);
if (m) {
console.log(m[0]);
}
你已经通过正则表达式实现了这个功能。
正向先行断言:(?<=\t|,)
检查匹配开始前的逗号或制表符
第一个捕获组:([a-z].*?)
捕获冒号:
之前和逗号,
或制表符\t
之后的所有内容
第二个捕获组:(:)
捕获冒号:
只需提取匹配的第一个捕获组。