使用逗号和竖线分割字符串

3
我不擅长使用正则表达式,所以我在这里询问。

假设我有以下字符串:

let a = 'A,B,C,D', 
    b = 'A,B|C,D',
    c = 'A|B|C|D'

我想用逗号,和竖线|来分隔它们。类似这样:
// a.split(regex)

在考虑性能的同时,可以使用类似的方法。

上述所有字符串都应该得到// [A, B, C, D]的结果。

如何编写正则表达式?同时,我需要一些关于学习正则表达式的参考资料。


我知道你要求正则表达式的解决方案,但是我想提供另一种方式,以防你认为那是实现这个任务的唯一方法。它并不是。你可以通过在split()方法中指定分隔符来获得相同的结果:a.split("|") ,而不必启动正则表达式引擎来执行如此简单的任务,从而浪费资源。 - gbeaven
@gbeaven 我尝试使用string.split([',','|'])方法,但是没有成功。你能给个例子吗? - Nelson Owalo
让我们使用正则表达式来获取与以下代码相同的结果。let a = 'A|B|C|D',result = a.split('|') console.log(result); - gbeaven
@gbeaven - 我修改了我的问题。它有点令人困惑。我想用,|来分割。.split()可以接受一个数组,但似乎无法正常工作。 - Nelson Owalo
我明白了。在搜索超过1个分隔符的情况下,使用正则表达式是合适的。 - gbeaven
2个回答

4
你可以尝试这样做:
str.split(/[|,]+/)

这里,正则表达式指定|,可以出现1次或多次,如果找到它们,split函数就会发挥作用。
在测试正则表达式时,这是最好的工具: https://regex101.com/ 我在这里学习了我的正则表达式技能: https://regexr.com/ 希望这有所帮助!

谢谢提供链接。我现在正在查看。 - Nelson Owalo
如所述,不需要使用 +split() 函数会将其找到的所有内容都分割。 - Asons
如果我们有两个 |,例如:b = 'A,B||C,D',那么它将产生一个额外的空字符串。 - AkshayM

4

尝试使用正则表达式/[,|]/

通过将正则表达式的一部分放置在圆括号中,您可以将该部分的正则表达式组合在一起。

这里的,|匹配列表中的单个字符。

let a = 'A,B,C,D', 
    b = 'A,B|C,D',
    c = 'A|B|C|D'

a = a.split(/[,|]/);
b = b.split(/[,|]/);
c = c.split(/[,|]/);

console.log(a);
console.log(b);
console.log(c);


顺便提一下,split函数总是全局的。 - Nina Scholz
@NinaScholz,感谢您提出的非常重要的观点...... - Mamun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接