提问者:小点点

不明白为什么我的正则表达式不起作用?[副本]


尝试创建一个正则表达式,该表达式在'、'和'\n'处分割字符串,然后在自定义分隔符中传递一个分隔符(在我的代码中由firstChar表示)。

正在传入的字符串的格式:{delimiter}\n{numbers}。我在网上使用过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个答案

匿名用户

您的第一个字符不是数字,因此直接转到else条件,如果您想要动态正则表达式,则需要使用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"))