如何在javascript中拆分包含多个规则的字符串

Alo*_*lon 1 javascript string split

我有这个字符串例如:

str = "my name is john#doe oh.yeh";
Run Code Online (Sandbox Code Playgroud)

我正在寻找的最终结果是这个数组:

strArr = ['my','name','is','john','&#doe','oh','&yeh'];
Run Code Online (Sandbox Code Playgroud)

这意味着2条规则适用:

  1. 每个空间后拆分""(我知道怎么做)
  2. 如果有特殊字符("."或"#"),那么也会拆分,但在带有特殊字符的单词之前添加字符"&".

我知道第一条规则我可以​​strArr = str.split("").但是我该如何做其他伎俩呢?

谢谢,Alon

Fel*_*ing 6

假设结果应该是'&doe',而不是'&#doe'一个简单的解决办法是只需更换所有.,并#&空格分开:

strArr = str.replace(/[.#]/g, ' &').split(/\s+/)
Run Code Online (Sandbox Code Playgroud)

/\s+/ 匹配连续的空格而不是一个.

如果结果应该是'&#doe''&.yeah'使用相同的正则表达式并添加捕获:

strArr = str.replace(/([.#])/g, ' &$1').split(/\s+/)
Run Code Online (Sandbox Code Playgroud)