繁体   English   中英

正则表达式匹配字符串并在javascript中提取电子邮件和用户名

[英]regex to match the string and extract email and user name in javascript

我有一个像下面这样的字符串。 const myString =

"{
    "typ": "JWT",
    "alg": "44555"
}
{
    "XForwardedFor": "12.134.234.22",
    "sm_AppId": "test",
    "UserId": "changu",
    "sm_Userdn": "some userdn",
    "Mail": "changu@gmail.com",
    "DomainName": "www.test.com",
    "UserAgent": "Amazon",
    "CreationTime": "2020-09-08T05:01:55.616Z"
}
ii( NJm)'d=IXp:$uG\mf  }"

我需要使用正则表达式从上面获取用户 ID 和邮件。 我怎样才能实现它。 我尝试了下面的正则表达式代码,但没有找到运气。

myString.match(/"UserId":"([\s\S]*?)"/i);

由于字符串看起来像一个 JSON 文档,而不是尝试构建一个正则表达式来提取电子邮件,您可能应该使用JSON.parse(// ... .

问题是您的字符串不是有效的 JSON 文档,但如果格式不会改变,您可能可以执行以下操作:

const myString = `{
    "typ": "JWT",
    "alg": "44555"
}
{
    "XForwardedFor": "12.134.234.22",
    "sm_AppId": "test",
    "UserId": "changu",
    "sm_Userdn": "some userdn",
    "Mail": "changu@gmail.com",
    "DomainName": "www.test.com",
    "UserAgent": "Amazon",
    "CreationTime": "2020-09-08T05:01:55.616Z"
}
ii( NJm)'d=IXp:$uG\mf  }`
const regexp = /\{[^\}]*\}/gs
const email = JSON.stringify(myString.match(regexp)[1]).Mail

从字符串中提取出有效的 JSON 部分后,您可以解析它并访问您需要的属性:

 const resp=`{ "typ": "JWT", "alg": "44555" } { "XForwardedFor": "12.134.234.22", "sm_AppId": "test", "UserId": "changu", "sm_Userdn": "some userdn", "Mail": "changu@gmail.com", "DomainName": "www.test.com", "UserAgent": "Amazon", "CreationTime": "2020-09-08T05:01:55.616Z" } ii( NJm)'d=IXp:$uG\\mf }` let obj=JSON.parse(resp.match(/\\{[^{]*UserId[^}]*\\}/)) console.log(obj.UserId, obj.Mail)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM