如何在javascript中拆分此字符串?

如何在javascript中拆分此字符串?,javascript,node.js,regex,Javascript,Node.js,Regex,我有一个任务来分割字符串。首先,要执行一些操作 let currSynonyms = "['rear neck and choke', 'multiple fractures, multiple hairline injuries', 'leukemia']" currSynonyms = currSynonyms.replace('[', ''); currSynonyms = currSynonyms.replace(']', ''); console.log(currS

我有一个任务来分割字符串。首先,要执行一些操作

let currSynonyms = "['rear neck and choke', 'multiple fractures, multiple hairline injuries', 'leukemia']"
currSynonyms = currSynonyms.replace('[', '');
currSynonyms = currSynonyms.replace(']', '');
console.log(currSynonyms);
Output is this string:
'rear neck and choke', 'multiple fractures, multiple hairline injuries', 'leukemia'
现在我必须拆分它,这样第二个元素就不会被逗号分隔了。 因此,我的输出应该是这样的数组:

['rear neck and choke', 'multiple fractures, multiple hairline injuries', 'leukemia']

let arr = "['abc','xyz','shell's, disease']";
如果我使用同义词.split(','),我会得到:

如果你这样做,你会得到4,但这不是我想要的。
我知道我必须以某种方式使用正则表达式,但我不知道如何使用它?

替换
,它:

let arr=“['abc','xyz','shell's,disease']”;

const out=JSON.parse(arr.replace(/'(?=,|)])|(?replace
'
,它:

let arr=“['abc','xyz','shell's,disease']”;
const out=JSON.parse(arr.replace(/')(?=,|])|(?
这将导致

[ 'rear neck and choke',
  'multiple fractures',
  'multiple hairline injuries',
  'leukemia' ]
这将导致

[ 'rear neck and choke',
  'multiple fractures',
  'multiple hairline injuries',
  'leukemia' ]

如果字符串如下所示,JSON.parse将产生问题:

['rear neck and choke', 'multiple fractures, multiple hairline injuries', 'leukemia']

let arr = "['abc','xyz','shell's, disease']";
这里,第三个元素中有一个引号,当您试图解析它时,它会给出一个错误。 因此,我提出了一个更好的解决方案:

let arr = "['abc','xyz','shell's, disease']";
arr = arr.replace('[', '')
arr = arr.replace(']', '')
arr = arr.split(/',/);
console.log(arr.length);
console.log(arr);

Output:
3
[ "'abc", "'xyz", "'shell's, disease'" ]


如果字符串如下所示,JSON.parse将产生问题:

['rear neck and choke', 'multiple fractures, multiple hairline injuries', 'leukemia']

let arr = "['abc','xyz','shell's, disease']";
这里,第三个元素中有一个引号,当您试图解析它时,它会给出一个错误。 因此,我提出了一个更好的解决方案:

let arr = "['abc','xyz','shell's, disease']";
arr = arr.replace('[', '')
arr = arr.replace(']', '')
arr = arr.split(/',/);
console.log(arr.length);
console.log(arr);

Output:
3
[ "'abc", "'xyz", "'shell's, disease'" ]


由于在给定的示例中,可能还需要考虑用作撇号的单引号字符,因此我建议使用以下基于正则表达式的方法

  • 拆下前端开口支架和单引号
  • 拆下尾部的单引号和结束括号
  • 按以下顺序拆分。。。
    • 单引号,可选空格顺序(OWSS),逗号,OWSS,单引号
  • …例如

    const-sample=“[‘后颈部和颈部阻塞’、‘多处骨折、多处发际线损伤’、‘白血病’、‘贝壳病’”;
    /**
    *1.拆下导孔支架和单引号。
    *2.拆下尾随单引号和结束括号。
    *3.按以下顺序拆分。。。
    *-单引号,可选空白序列(OWSS),
    *逗号,OWSS,单引号。
    */
    log(`${sample}`);
    console.log(示例
    .替换(/^\['/,'')
    .替换(/'\]$/,'')
    .split(/'\s*,\s*'/g)
    
    )
    由于在给定的示例中,可能还需要考虑用作撇号的单引号字符,因此我建议使用基于正则表达式的方法,如下所示

  • 拆下前端开口支架和单引号
  • 拆下尾部的单引号和结束括号
  • 按以下顺序拆分。。。
    • 单引号,可选空格顺序(OWSS),逗号,OWSS,单引号
  • …例如

    const-sample=“[‘后颈部和颈部阻塞’、‘多处骨折、多处发际线损伤’、‘白血病’、‘贝壳病’”;
    /**
    *1.拆下导孔支架和单引号。
    *2.拆下尾随单引号和结束括号。
    *3.按以下顺序拆分。。。
    *-单引号,可选空白序列(OWSS),
    *逗号,OWSS,单引号。
    */
    log(`${sample}`);
    console.log(示例
    .替换(/^\['/,'')
    .替换(/'\]$/,'')
    .split(/'\s*,\s*'/g)
    
    )
    你对输入字符串格式有多确定?你能控制它吗?有点愚蠢的回答:删除前两个字符和后两个字符,然后用
    ,“
    分割。问题更复杂吗?我很确定。我没有太多的控制权,我必须处理这个输入itself@TheMaster是的,这也是我要找的正则表达式可以解决这个问题,但我不知道如何解决。你对输入字符串格式有多确定?你能控制它吗?有点傻的回答:删除前两个字符,然后按
    ,“
    分割。问题更复杂吗?我很确定。我不需要太多控制,我必须用这个输入操作itself@TheMaste是的,这也是我想要的。正则表达式可以解决这个问题,但我不知道如何解决?