首页 > 解决方案 > 匹配方括号中的数字并获取剩余的字符串

问题描述

我有一个如下字符串

value[0]
  1. 我想检查字符串是否包含方括号。
  2. 如果是,则获取上述情况下的数字0
  3. 获取不带括号和数字的其余字符串,在上述情况下为value
var matches = this.key.match('/[([0-9]+)]/');  // 1 
if (null != matches) {
    var num = matches[1]; // 2
}

第三点如何实现?

标签: javascriptregex

解决方案


您需要删除包装引号,并转义括号。

此外,您可以使用另一个捕获组来获取字符串。第一个捕获组应该匹配任何不是括号的东西。如果找不到匹配项,请使用后备数组,并使用解构来获取字符串和数字。如果字符串/数字undefined不匹配。

var key = 'value[0]';

var [, str, number] = key.match(/([^\[]+)\[([0-9]+)\]/) || [];

console.log({ str, number });


推荐阅读