第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Javascript 中使用正則表達式提取姓名和電子郵件

在 Javascript 中使用正則表達式提取姓名和電子郵件

繁花不似錦 2023-06-15 09:42:42
我有一個帶類型的字符串,預期的結(jié)果是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)
查看完整描述

4 回答

?
臨摹微笑

TA貢獻1982條經(jīng)驗 獲得超2個贊

您可以使用


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]);

}

請參閱正則表達式演示

細節(jié)

  • \[- 一個[字符

  • (\S+)- 第 1 組:一個或多個非空白字符(留在 內(nèi)[...],您可以改用[^\s[\]]+

  • (?:\s+(.*?))?- 一個由 1+ 個空格組成的可選字符串,后跟第 2 組,盡可能少地捕獲除換行符以外的任何零個或多個字符(如果您想留在 內(nèi),請?zhí)鎿Q.*?為)[^[\]]*?[...]

  • \s+- 一個或多個空格

  • <([^<>]+)>- , 第 3 組:除and>之外的一個或多個字符,然后<>>

  • ]- 一個]字符。


查看完整回答
反對 回復 2023-06-15
?
藍山帝景

TA貢獻1843條經(jīng)驗 獲得超7個贊

您可以使用 3 種不同的正則表達式來簡化問題。此外,您可以依賴字符串的結(jié)構(gòu):


const input1 = "[Peter Jane Minesotta <pet.j.minn@mnu.al.edu>]"


const input2 = "[Peter  <pet.j.minn@mnu.al.edu>]"


function getFName(input) {

  const name =  input.match(/(?<=\[)\w+/);

  return name ? name[0] : '';

}


function getSNames(input) {

  const names =  input.match(/(?<!\[)(?<=\s)\w+(?=\s)/g);

  return names ? names.join(' ') : '';

}


function getEmail(input) {

  const mail =  input.match(/(?<=<)(?:\w|\.|@)+(?=>])/);

  return mail ? mail[0] : '';

}


const x = {

  name: getFName(input1),

  otherNames: getSNames(input1),

  mail: getEmail(input1)

};


console.log(x);



const y = {

  name: getFName(input2),

  otherNames: getSNames(input2),

  mail: getEmail(input2)

};


console.log(y);


查看完整回答
反對 回復 2023-06-15
?
Smart貓小萌

TA貢獻1911條經(jīng)驗 獲得超7個贊

這應該給你你想要的......

^\[(\w+)\s(?:((?:\w+\s?)*)\s)?<(.+)>\]$
  1. 第一組(\w+)將捕獲第一個單詞(一旦找到空間就停止),在您的情況下將是 firstName

  2. 第二組(?:((?:\w+\s?)*)\s)? 將捕獲最后一個空格(在 firstName 之后)和<第一次出現(xiàn)之間的所有內(nèi)容,您要將其保存在SecondAndRemainingNames中。注意:?在這個組的末尾使這個模式的出現(xiàn)成為可選的,這是你想要的,如你的第二個例子所示。

  3. 最后,最后一組將捕獲<>之間的所有內(nèi)容,對您來說就是電子郵件

我已經(jīng)用你的兩個樣本輸入測試了這個模式,它按預期工作.. :)


查看完整回答
反對 回復 2023-06-15
?
梵蒂岡之花

TA貢獻1900條經(jīng)驗 獲得超5個贊

這很好用:


var all = input.match(/(^\[\w+)|(\w+ )+|<.+>/gi);

var Fname = ""

var SecondAndRemainingNames = ""

var email = ""

if (all.length == 3) {

    Fname = all[0];

    SecondAndRemainingNames = all[1];

    email = all[2];

} else if (all.length == 2) {

    Fname = all[0];

    email = all[1];

}

Fname = Fname.substring(1);

if (SecondAndRemainingNames != "") {

    SecondAndRemainingNames = SecondAndRemainingNames.trim();

}

email = email.substring(1).slice(0, -1);


查看完整回答
反對 回復 2023-06-15
  • 4 回答
  • 0 關注
  • 261 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號