为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇潇雨雨 2021-11-04 16:47:53
尝试创建一个正则表达式,在 ',' 和 '\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 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超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"))


查看完整回答
反对 回复 2021-11-04
  • 1 回答
  • 0 关注
  • 313 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信