首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用js正则表达式获取特定字符中的所有元素

如何使用js正则表达式获取特定字符中的所有元素
EN

Stack Overflow用户
提问于 2019-01-19 08:53:02
回答 3查看 37关注 0票数 2

我在变量中有一个字符串--一个,它包含像字符串格式的变量一样的数组解析,例如,我想得到所有由[]限制的索引

代码语言:javascript
复制
var a = 'info.name[0][1][5].data[0]',
  collect = [];

a.split(']').reverse().forEach(function(a) {
  if (a.indexOf('[') !== -1) {
    var splits = a.split('[');
    collect.push(splits[splits.length - 1])
  }
})
console.log(collect);

我上面显示的代码很好用,我知道它有时会失败,所以如果可能的话,我正在寻找更好的程序,请帮助我用正则表达式来解决这个问题。

代码语言:javascript
复制
**Please Dont Use Jquery or any other libs to solve this problem **
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-19 09:01:09

您可以使用match方法:

代码语言:javascript
复制
const a = 'info.name[0][1][5].data[0]';
const collect = a.match(/[^[]+?(?=\])/g) || [];
console.log(collect);

正则表达式包括:

  • [^[]+?:捕获一个或多个不是[的字符。当满足下一个条件时,?使捕获停止:
  • (?=\]):要求下一个字符是],但不要捕获它。

g修饰符将确保返回所有匹配。

如果根本没有匹配项,则添加|| []。在这种情况下,match返回null。这个添加将输出一个空数组,而不是那个null,这可能更实用。

注意:我不知道你为什么使用reverse,但是如果你真的需要倒序输出数组,你当然可以将reverse应用于它。

票数 4
EN

Stack Overflow用户

发布于 2019-01-19 08:56:58

匹配[,使用负字符集([^\]]+)捕获除]以外的任何内容,然后匹配]。然后,您可以提取每个捕获的组,它将包含[]s之间匹配的子字符串:

代码语言:javascript
复制
const a = 'info.name[0][1][5].data[0]';
const collect = [];
const re = /\[([^\]]+)\]/g;
let match;
while (match = re.exec(a)) {
  collect.push(match[1]);
}
collect.reverse();
console.log(collect);

票数 2
EN

Stack Overflow用户

发布于 2019-01-19 09:14:10

您可以在match:/\b\d+\b/g中使用此正则表达式。

它匹配任何非字母数字值(如和)之间的数字。

代码语言:javascript
复制
const a = 'info.name[0][1][5].data[10]';
const result = a.match(/\b\d+\b/g) || [];
console.log(result);

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54265492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档