javascript - 在 Javascript 中使用正则表达式提取姓名和电子邮件

标签 javascript regex string

我有一个类型的字符串,预期的结果是

input = "[Peter Jane Minesotta <pet.j.minn@mnu.al.edu>]"
输出
Fname = "Peter"
SecondAndRemainingNames = "Jane Minesotta"
email = "pet.j.minn@mnu.al.edu"
input = "[Peter  <pet.j.minn@mnu.al.edu>]"
输出
    Fname = "Peter"
    SecondAndRemainingNames = ""
    email = "pet.j.minn@mnu.al.edu
我需要使用正则表达式提取
我试过了
input.match(/\w/gim)

最佳答案

您可以使用

const rx = /\[(\S+)(?:\s+(.*?))?\s+<([^<>]+)>]/
const strings = ['[Peter Jane Minesotta <pet.j.minn@mnu.al.edu>]','[Peter  <pet.j.minn@mnu.al.edu>]'];
for (const s of strings) {
  const [_, Fname, SecondAndRemainingNames, email] = s.match(rx);
  console.log([Fname, SecondAndRemainingNames, email]);
}

regex demo .
详情
  • \[ - 一个 [字符
  • (\S+) - 第 1 组:一个或多个非空白字符(要留在 [...] 内,您可以改用 [^\s[\]]+)
  • (?:\s+(.*?))? - 1+ 个空格的可选字符串,后跟第 2 组,尽可能少地捕获除换行符之外的任何零个或多个字符(如果您想留在 .*? 内,请将 [^[\]]*? 替换为 [...])
  • \s+ - 一个或多个空格
  • <([^<>]+)> - > , 第 3 组:除 < 之外的一个或多个字符和 > ,然后 >
  • ] - 一个 ]字符。
  • 关于javascript - 在 Javascript 中使用正则表达式提取姓名和电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64554251/

    相关文章:

    javascript - 使用 JS 使用正则表达式验证用户输入时遇到问题

    用于 Linux 的 RegEx 和 grep

    c - 初学者,带源代码的 C 语言 switch 中的字符串。可能的?

    javascript - 如何在 Internet Explorer 中播放作品音频

    javascript - 使用 Moment.js 清理时间的最佳方法是什么?

    javascript - jQuery 向下滑动导航

    javascript - 一系列 promise 如何在不被消耗/履行的情况下返回?

    Java 模式打印捕获组

    python - 创建字符串的变体

    javascript - 为什么在我的 AJAX 调用中,response.chartAt(0) 返回未定义?