正则表达式给出错误的结果

时间:2019-05-28 18:28:53

标签: javascript regex

使用Java脚本尝试使用正则表达式来捕获字符串中的数据。

我的字符串从左括号开始出现

['ABC']['ABC.5']['ABC.5.1']

我的目标是将正则表达式的每个片段都以块或数组的形式获取。 我查看了一下,发现匹配功能可能是一个不错的选择。

var myString = "['ABC']['ABC.5']['ABC.5.1']";
myString.match(/\[/g]);

我看到的输出只是每个元素的[。

我希望数组像这样

myString[0] = ['ABC']
myString[1] = ['ABC.5']
myString[2] = ['ABC.5.1']

要获得上述期望的输出,正确的正则表达式和/或函数是什么?

2 个答案:

答案 0 :(得分:0)

您可以将此正则表达式与split一起使用:

\[[^\]]+

详细信息

  • \[-匹配[
  • [^\]]+-一次或多次匹配]以外的任何内容
  • \]-匹配]

let str =  `['ABC']['ABC.5']['ABC.5.1']`

let op = str.split(/(\[[^\]]+\])/).filter(Boolean)

console.log(op)

答案 1 :(得分:-1)

如果只想将它们分开,则可以使用一个简单的表达式,或者可以使用一个更好的表达式来将它们分开:

\[\'(.+?)'\]

const regex = /\[\'(.+?)'\]/gm;
const str = `['ABC']['ABC.5']['ABC.5.1']`;
const subst = `['$1']\n`;

// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);

console.log('Substitution result: ', result);

DEMO