使用Perl正则表达式提取字符串中的多个用户名并保存到数组
提取字符串中的用户名并保存到数组
方法1:正则表达式匹配
利用正则精准匹配目标字段后的用户名,适合格式相对固定的场景:
const str = "id:123,createdby:'testuser1',\"lastmodifiedby\":'testuser2'....."; const usernameRegex = /(createdby|lastmodifiedby):'([^']+)'/g; const usernames = []; let matchResult; // 循环获取所有匹配项 while ((matchResult = usernameRegex.exec(str)) !== null) { usernames.push(matchResult[2]); } console.log(usernames); // 输出: ['testuser1', 'testuser2']
正则说明:(createdby|lastmodifiedby)匹配目标字段,'([^']+)'匹配单引号包裹的用户名([^']+表示匹配任意非单引号字符),通过exec循环捕获所有符合条件的用户名。
方法2:字符串分割+筛选处理
如果字符串格式稳定,也可以通过分割和筛选操作提取:
const str = "id:123,createdby:'testuser1',\"lastmodifiedby\":'testuser2'....."; const usernames = str.split(',') // 筛选包含目标字段的项 .filter(item => item.includes('createdby') || item.includes('lastmodifiedby')) // 提取用户名部分 .map(item => { const value = item.split(':')[1]; return value.slice(1, -1); // 去除前后的单引号 }); console.log(usernames); // 输出: ['testuser1', 'testuser2']
步骤说明:先按逗号拆分字符串为数组,筛选出包含createdby或lastmodifiedby的元素,再拆分键值对,最后去掉值的单引号得到用户名。
内容的提问来源于stack exchange,提问作者sai saran
相关产品推荐
相关产品推荐

