如何在Dart中使用正则表达式提取字符串内的字母数字组合词?
Dart 正则提取字母数字ID解决方案
你使用的[a-zA-Z0-9]属于单字符匹配规则,每次仅能匹配1个字母或数字,无法匹配连续的多字符ID,因此无法得到预期结果。
完整实现代码
void main() { var string = "My id is 6aT7u. I used to play basketball and cricket."; // 正则规则:匹配同时包含字母和数字的独立字母数字串,自动过滤纯字母的普通单词 RegExp idReg = RegExp(r'\b(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9]+\b'); // 提取第一个匹配结果 String? targetId = idReg.firstMatch(string)?.group(0); print(targetId); // 输出结果:6aT7u }
正则规则说明
\b:单词边界标识符,确保匹配到的是完整的独立单词,不会截取其他长单词的中间片段(?=.*\d):正向预查规则,要求匹配的内容必须至少包含1个数字(?=.*[a-zA-Z]):正向预查规则,要求匹配的内容必须至少包含1个字母[a-zA-Z0-9]+:+是量词标识符,代表匹配1个及以上连续的大小写字母或数字
如果你的ID有固定长度要求,比如示例中是5位,可以将正则优化为r'\b(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9]{5}\b',进一步提升匹配精度。
内容的提问来源于stack exchange,提问作者Sumit Kumar
相关产品推荐
相关产品推荐

