用Regex(正则表达式)条件匹配javascript替换字符串的一部分
我在想是否可以将此条件匹配替换为map方法中的链接 最终的目标,我想取代地址apt号码成为一个链接后,它呈现 但地址中包含的所有文本如下所示: Kulas Light公寓556 Gwenborough 92998-3874类似: Kulas Light Apt${variable}Gwenborough 92998-3874 该变量包含如下标记 我不知道我怎样才能拿到那个号码,然后转到一个链接 谢谢你的帮助用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
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}
}@格奥尔伦为我的困惑道歉,我更新了我的问题,希望现在有更多的意义。非常感谢。