用Regex(正则表达式)条件匹配javascript替换字符串的一部分

用Regex(正则表达式)条件匹配javascript替换字符串的一部分,javascript,regex,ecmascript-6,Javascript,Regex,Ecmascript 6,我在想是否可以将此条件匹配替换为map方法中的链接 最终的目标,我想取代地址apt号码成为一个链接后,它呈现 但地址中包含的所有文本如下所示: Kulas Light公寓556 Gwenborough 92998-3874类似: Kulas Light Apt${variable}Gwenborough 92998-3874 该变量包含如下标记 我不知道我怎样才能拿到那个号码,然后转到一个链接 谢谢你的帮助 const datas = [{ "id": 1, "name": "Lean

我在想是否可以将此条件匹配替换为map方法中的链接

最终的目标,我想取代地址apt号码成为一个链接后,它呈现

但地址中包含的所有文本如下所示: Kulas Light公寓556 Gwenborough 92998-3874类似:

Kulas Light Apt${variable}Gwenborough 92998-3874

该变量包含如下标记

我不知道我怎样才能拿到那个号码,然后转到一个链接

谢谢你的帮助

const datas = [{
  "id": 1,
  "name": "Leanne Graham",
  "username": "Bret",
  "email": "Sincere@april.biz",
  "address": "Kulas Light Apt #556 Gwenborough 92998-3874",
  "phone": "1-770-736-8031 x56442",
  "website": "hildegard.org",
  "company": {
    "name": "Romaguera-Crona",
    "catchPhrase": "Multi-layered client-server neural-net",
    "bs": "harness real-time e-markets"
  }
},
{
  "id": 2,
  "name": "Ervin Howell",
  "username": "Antonette",
  "email": "Shanna@melissa.tv",
  "address": "Kulas Light Apt #123 Gwenborough 92998-3874",
  "phone": "010-692-6593 x09125",
  "website": "anastasia.net",
  "company": {
    "name": "Deckow-Crist",
    "catchPhrase": "Proactive didactic contingency",
    "bs": "synergize scalable supply-chains"
  }
},
{
  "id": 3,
  "name": "Clementine Bauch",
  "username": "Samantha",
  "email": "Nathan@yesenia.net",
  "address": "Kulas Light Apt #56 Gwenborough 92998-3874",
  "phone": "1-463-123-4447",
  "website": "ramiro.info",
  "company": {
    "name": "Romaguera-Jacobson",
    "catchPhrase": "Face to face bifurcated interface",
    "bs": "e-enable strategic applications"
  }
}
]

const testing = datas.map(data => {
  if (data.address.match(/[#][0-9]+/)) {
    let numberMatch = data.address.match(/[#][0-9]+/)
    numberMatch = `<a href=${data.website}> ${parseInt(numberMatch)} </a>`
  }
  return (
    <div>
      <p>id: {data.id}</p>
      <p>name: {data.name}</p>
      <p>address: {data.address}</p>
    </div>
  )
})


你可以用替换

常数数据=[{ id:1, 姓名:Leanne Graham, 用户名:Bret, 电邮:Sincere@april.biz, 地址:Gwenborough 556号Kulas Light公寓92998-3874, 电话:1-770-736-8031 x56442, 网站:hildegard.org, 公司:{ 姓名:Romaguera Crona, 流行语:多层客户机-服务器神经网络, bs:利用实时电子市场 } }, { id:2, 姓名:埃尔文·豪厄尔, 用户名:Antonette, 电邮:Shanna@melissa.tv, 地址:Gwenborough 92998-3874 Kulas Light公寓123号, 电话:010-692-6593 x09125, 网站:anastasia.net, 公司:{ 姓名:德科·克里斯特, 流行语:积极的说教性应急, bs:协同可扩展的供应链 } }, { id:3, 姓名:Clementine Bauch, 用户名:Samantha, 电邮:Nathan@yesenia.net, 地址:Gwenborough 92998-3874 Kulas Light 56号公寓, 电话:1-463-123-4447, 网站:ramiro.info, 公司:{ 姓名:Romaguera Jacobson, 流行语:面对面分岔界面, bs:电子化战略应用 } } ] 常量测试=datas.map{ 身份证件 名称 住址 网站 } => { 回来 ` id:${id}

名称:${name}

地址:${address.replace/\d+/,match=>`}

` }
控制台测试 您可以使用替换方法一次执行此操作:

要使用的正则表达式是/apt\s?\d+/i apt字面上是apt,放入一个组,稍后在替换字符串中引用。 \s?一个空间,如果找到的话。 a字面上是。如果你想匹配它,并在稍后的扭结文本中显示,请将其添加到下一个捕获组。 \d+一个或多个数字。如果要包含哈希符号但删除其文字匹配,可以使用\d+。 替换字符串为$1: $1返回第一个捕获组apt。 $2返回第一个捕获组,即在apt之后找到的数字。 数据=[{ id:1, 姓名:Leanne Graham, 用户名:Bret, 电邮:Sincere@april.biz, 地址:Gwenborough 556号Kulas Light公寓92998-3874, 电话:1-770-736-8031 x56442, 网站:hildegard.org, 公司:{ 姓名:Romaguera Crona, 流行语:多层客户机-服务器神经网络, bs:利用实时电子市场 } }, { id:2, 姓名:埃尔文·豪厄尔, 用户名:Antonette, 电邮:Shanna@melissa.tv, 地址:Gwenborough 92998-3874 Kulas Light公寓123号, 电话:010-692-6593 x09125, 网站:anastasia.net, 公司:{ 姓名:德科·克里斯特, 流行语:积极的说教性应急, bs:协同可扩展的供应链 } }, { id:3, 姓名:Clementine Bauch, 用户名:Samantha, 电邮:Nathan@yesenia.net, 地址:Gwenborough 92998-3874 Kulas Light 56号公寓, 电话:1-463-123-4447, 网站:ramiro.info, 公司:{ 姓名:Romaguera Jacobson, 流行语:面对面分岔界面, bs:电子化战略应用 } } ],newArr=datas.mapdata=> ` id:${data.id}

名称:${data.name}

地址:${data.address.replace/apt\s?\d+/i,`1`}

` ; /**显示newArr中的第一个元素**/ console.lognewArr[0]; /**输出: 身份证号码:1

姓名:莱恩·格雷厄姆

地址:Gwenborough Kulas Light公寓92998-3874

*/ 使用match时,它将返回一个对象。因此,在从数组中获取值时,必须通过获取来获取值。此外,您正在尝试转换以开头的字符串,通过该字符串返回NaN。您可以通过以下代码获得预期的输出:

常数数据=[{ id:1, 姓名:Leanne Graham, 用户名:Bret, 电邮:Sincere@april.biz, 地址:Gwenborough 556号Kulas Light公寓92998-3874, 电话:1-770-736-8031 x56442, 网站:hildegard.org, 公司:{ 姓名:Romaguera Crona, 流行语:多层客户机-服务器神经网络, bs:利用实时电子市场 } }, { id:2, 姓名:埃尔文·豪厄尔, 用户名:Antonette, 电邮:Shanna@melissa.tv, 地址:Gwenborough 92998-3874 Kulas Light公寓123号, 电话:010-692-6593 x09125, 网站:anastasia.net, 公司:{ 姓名:德科·克里斯特, 流行语:积极的说教性应急, bs:协同可扩展的供应链 } }, { id:3, 姓名:克莱门汀 鲍奇, 用户名:Samantha, 电邮:Nathan@yesenia.net, 地址:Gwenborough 92998-3874 Kulas Light 56号公寓, 电话:1-463-123-4447, 网站:ramiro.info, 公司:{ 姓名:Romaguera Jacobson, 流行语:面对面分岔界面, bs:电子化战略应用 } } ] 让我看看数字 常量测试=datas.mapdata=>{ 如果data.address.match/[0-9]+/{ numberMatch=data.address.match/[0-9]+/ 让value=numberMatch.mapval=>val numberMatch=`` } 回来 id:{data.id}

名称:{data.name}

地址:{data.address}

网站:{numberMatch}


}@格奥尔伦为我的困惑道歉,我更新了我的问题,希望现在有更多的意义。非常感谢。