js 正则表达式,字符串中如何匹配id的内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 正则表达式,字符串中如何匹配id的内容?相关的知识,希望对你有一定的参考价值。

字符串如下:

`formatMessage(id:'app.settings.menu.focus'),<FormattedMessage id="app.settings.perferences.save"></FormattedMessage>
id:'测试1' id="测试2"
`

想写一条正则
目标是取到id的内容,想得到两条结果:
app.settings.menu.focus
app.settings.perferences.save
而不取 测试1 和测试2 。

就是说 formatMessage( ……) 和 FormattedMessage…………</FormattedMessage> 包裹的也是一个限制条件。
希望大神能再指点一下,不胜感激!!!
哪位正则大神赐教下?不胜感激。

参考技术A const regex = /(.*)(id)(:|=)(\\s*\\S+)(.*)/gm;
const str = `formatMessage( id: 'app.settings.menu.focus' ),
<FormattedMessage id="app.settings.perferences.save" ></FormattedMessage>`;
console.log(str.replace(regex,'$4'))

替换即可

追问

大神,可能我问题没有描述清楚,字符串应该如下:
`上面的字符串…… id:'测试1' id="测试2"`
目标是取到id的内容,想得到两条结果:app.settings.menu.focus app.settings.perferences.save
而不取 测试1 和测试2 。
就是说 formatMessage( ……) 和 FormattedMessage………… 包裹的也是一个限制条件。

追答const regex = /formatMessage\\(\\id:\\s?\\'(.*)\\'\\\\).*\\<FormattedMessage\\s+id=\\"(.*)\\"\\>/gm;
const str = `formatMessage(id:'app.settings.menu.focus'),<FormattedMessage id="app.settings.perferences.save"></FormattedMessage>id:'测试1' id="测试2"`;
if (regex.exec(str) !== null) 
  console.log(RegExp.$1)
  console.log(RegExp.$2)

本回答被提问者采纳
参考技术B /(\.*id:\s*'(.*)'.*\)|(\.*id:\s*"(.*)".*\)/img 可以获取id: '...',/<[a=zA-Z]\w*?.*?(id="(.*?)").*?>.*?<\/[a=zA-Z]\w*?>/img 可以获取 id="..."
然而你获取到了也不知道哪个是你需要的值。想一条正则两个都取到,只需要把两条正则外加()中间加'|'然后合并,即/(1)|(2)/。

js正则表达式替换捕获内容

参考技术A 将@王者的面具<102292>中的尖括号和尖括号内的id删除,将用户名称高亮,并将id在昵称dom元素的data-uid属性保存。
用js字符串的replace函数实现,用正则表达式匹配需要替换的字符,正则表达式中,每对括号()为一个分组,可以用正则的分组来捕获匹配到的内容,用占位符$1、$2代替。

以上是关于js 正则表达式,字符串中如何匹配id的内容?的主要内容,如果未能解决你的问题,请参考以下文章

在js中正则表达式如何判断用户输入的内容只能是数字和字母

js正则表达式替换捕获内容

Js正则表达式的如何写这样一个匹配规则!1) 取指定范围的内容 2)过滤指定范围的内容

js 正则获取匹配部分最后一个内容

正则如何匹配某字符之后的内容

js正则表达式 匹配两个特定字符间的内容