如何用单个Regex从指定邮箱中提取不含公司名的用户名?
解决方案
可以用这个正则表达式精准提取不含公司后缀的用户名:
^(.*?)(?:company[123])?(?=@example\.com)$
正则各部分说明:
^:匹配字符串开头,避免误匹配邮箱外的内容(.*?):非贪婪匹配用户名核心部分(比如john.stewart、richard.weiss),非贪婪模式能确保不会把company前缀包含进来(?:company[123])?:可选非捕获组,匹配末尾的company1/company2/company3,?表示这部分可能不存在(?=@example\.com):正向预查,确保后面紧跟@example.com,且不会把这部分纳入匹配结果$:匹配字符串结尾,确保邮箱格式符合预期
测试结果
针对你的示例邮箱,提取结果如下:
- john.stewartcompany1@example.com →
john.stewart - bruce.williamscompany1@example.com →
bruce.williams - richard.weiss@example.com →
richard.weiss - julia.palermocompany2@example.com →
julia.palermo - edward.philipscompany3@example.com →
edward.philips
如果用JavaScript调用,示例代码如下:
const emails = [ 'john.stewartcompany1@example.com', 'bruce.williamscompany1@example.com', 'richard.weiss@example.com', 'julia.palermocompany2@example.com', 'edward.philipscompany3@example.com' ]; const regex = /^(.*?)(?:company[123])?(?=@example\.com)$/; emails.forEach(email => { const match = email.match(regex); match && console.log(match[1]); });
内容的提问来源于stack exchange,提问作者user2403607
相关产品推荐
相关产品推荐

