【问题标题】:Why this regex does split second double quote but not first double quote?为什么这个正则表达式会拆分第二个双引号而不是第一个双引号?
【发布时间】:2020-04-22 16:22:47
【问题描述】:

我有这个正则表达式:

let regex = /(?=\.|[\"])/;
test = "\"test.test\""
test.split(regex)

哪个输出:

[""test", ".test", """]

我想要

[""", "test", ".test", """]

我不明白为什么它会拆分第二个双引号而不是第一个双引号

P.S.:必须保持“.test”这样(而不是“.”“test”)

【问题讨论】:

  • @WiktorStribiżew 谢谢你会研究的。

标签: javascript regex


【解决方案1】:

这不是纯正则表达式解决方案,但您可以将此正则表达式与捕获组一起使用并过滤空结果:

const str = '"test.test"';

var arr = str.split(/(")|(?=\.)/).filter(Boolean)

console.log(arr)

您的方法存在问题:

您的正则表达式正在使用可以缩短为的前瞻断言:

(?=[."])

这意味着匹配在紧邻的下一个位置有一个点或" 的零宽度匹配。

由于您的输入在开头有 ",因此它匹配位置 0,然后是点之前的位置,最后是最后关闭 " 之前的位置(总共 3 个匹配项)。

【讨论】:

  • 我确实想要附加点:“.test”
猜你喜欢
  • 1970-01-01
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 2013-05-10
相关资源
最近更新 更多