[英]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.