困惑为什么我的正则表达式无法正常工作?

时间:2019-10-01 05:03:06

标签: javascript regex string split

尝试创建一个正则表达式,该表达式将一个字符串拆分为“,”和“ \ n”,然后传入一个自定义定界符(在我的代码中由firstChar表示)。

要传入的字符串的格式:{定界符} \ n {数字}。我在网上使用过regex101,它似乎可以在那儿工作,但是在我的实际代码中,它没有在自定义分隔符处分开,所以不确定我在做什么错。

if (str.includes('\n')) {
    let firstChar = str.slice(0, 1);
    if (parseInt(firstChar)) {
      strArr = str.split(/,|\n/) ;
    } else {
      strArr = str.split(/[,|\n|firstChar]/);
    }
}

期望'; \ n2; 5'等于7,但是由于某种原因我的数组分裂为[“;”,“ 2; 5”]。

1 个答案:

答案 0 :(得分:1)

您的第一个字符不是数字,因此您直接进入其他条件,如果您想使用动态正则表达式,则需要使用RegExp

进行构建。

这里您也不需要角色类

/[,|\n|firstChar]/

应该是

/,|\n|firstChar/

let splitter = (str) => {
  if (str.includes('\n')) {
    let firstChar = str.slice(0, 1);
    if (parseInt(firstChar)) {
      return str.split(/,|\n/);
    } else {
      let regex = new RegExp(`,|\\n|\\${firstChar}`, 'g') // building a dynamic regex here
      return str.split(regex).filter(Boolean)
    }
  }

}

console.log(splitter(";\n2;5"))
console.log(splitter("*\n2*5"))