困惑为什么我的正则表达式不起作用?

尝试创建一个正则表达式,在 ',' 和 '\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"] 。


潇潇雨雨
浏览 314回答 1
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"))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript