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

字符串如下:`formatMessage({id:'app.settings.menu.focus'}),<FormattedMessageid="app.setting... 字符串如下:

`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> 包裹的也是一个限制条件。
希望大神能再指点一下,不胜感激!!!
哪位正则大神赐教下?不胜感激。
展开
 我来答
瑪利亞丶凝望
2019-03-06 · TA获得超过400个赞
知道小有建树答主
回答量:294
采纳率:69%
帮助的人:159万
展开全部
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)
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-03-06
展开全部
/(\{.*id:\s*'(.*)'.*\})|(\{.*id:\s*"(.*)".*\})/img 可以获取{id: '...'},/<[a=zA-Z]\w*?.*?(id="(.*?)").*?>.*?<\/[a=zA-Z]\w*?>/img 可以获取 id="..."
然而你获取到了也不知道哪个是你需要的值。想一条正则两个都取到,只需要把两条正则外加()中间加'|'然后合并,即/(1)|(2)/。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式