当前位置: 首页 > 知识库问答 >
问题:

Repost-JavaScrpt分割行正则表达式-“双引号”中的“双引号”

彭朝
2023-03-14

我很抱歉,如果我错过了关闭的第一个帖子的细节。我在字符串中添加了双引号内的逗号,并将字符串添加到变量中。我不能简单地用逗号分开。

原帖

基本上,我需要把一条线分成一个数组。但当“双引号”中的“双引号”出现时,我遇到了错误。示例行如下所示:

var line = '"123","str","456",8/10/2021 7:44:47 AM,"str","str","str","","str","str",0,"789",1,"101112","Ironman"s, iPhone","+131415",30'

“123”、“str”、“456”、“2021年10月8日上午7:44:47”、“str”、“str”、“str”、“str”、“0”、“789”、“1”、“101112”、“Ironman”s、iPhone”、“131415”、30我当前的正则表达式是:

values = line.split(/,(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/g);

我的测试工具是https://regexr.com/,我不知道如何创建一个彩色的解释图,我看到了其他人的帖子。请你也指出一下。

如果我删除了“Ironman s,iPhone”中的双引号,我的正则表达式工作得很好,但现在很头疼,因为我找不到有效的方法来处理它。

共有1个答案

盛超
2023-03-14

你就快到了。您只需要将$替换为(?:,|$),因为在每个拆分位置,行尾不一定有偶数个双引号。

,(?=(?:[^"]*"[^"]*")*[^"]*(?:,|$))

例如

const line = '"123","str","456",8/10/2021 7:44:47 AM,"str","str","str","","str","str",0,"789",1,"101112","Ironman"s, iPhone","+131415",30';

const values = line.split(/,(?=(?:[^"]*"[^"]*")*[^"]*(?:,|$))/g);

console.log(values);
 类似资料:
  • 问题内容: 我写了一个正则表达式,用double-qoutes分割字符串: 如何将其扩展为与单双qoutes一起使用? 我试过了: 但这是行不通的 问题答案: 有两种方法:

  • 我正在尝试匹配这些字符串: 单引号中不能包含双引号 双引号中没有双引号 单引号内的单引号-单引号只能包含内部的文本 我想出了以下正则表达式: 但它不起作用。

  • 这是我之前问题的后续。我意识到我需要更具体地说明我的regex案例,以获得适用于我的案例的答案。 我已经与这个正则表达式斗争了很长一段时间(也使用我上一个问题的答案),我似乎无法构建我需要的东西。 我需要将所有字符串中出现的两个重复出现的单引号替换为(因此字符串内部意味着单引号)。这是因为在一种语言(语法)中,字符串中的引号使用<code>‘转义。 这里有一个例子(实际的例子可以包含用< code

  • 我有一个应用程序收到一个格式错误的JSON字符串,如下所示: null 也可能是格式错误的JSON字符串: 在本例中,不应替换消息值中的单引号。

  • 有没有一种方法使组的“capture”可以在regex后面引用,但其捕获的值不在匹配列表中返回? 或者其他一些方法来解决我(看似简单)的问题。