使用正则表达式的javascript split()

使用正则表达式的javascript split(),javascript,regex,Javascript,Regex,我想使用javascript拆分函数拆分//B/C字符串 但它的输出是[A,B,C],但我的预期输出是 ["A/", "B", "C"] 我是如何使用javascript实现这一点的?我更新了@Tushar answer,并尝试了这一方法。添加了\b以匹配前斜杠和单词边界,例如[a-z]和[0-9] "A//B/C".split(/\/\b/) 尝试使用RegExp/\/?=[A-Z]|$/匹配/if后跟A-Z或输入结束 "A//B/C".split(/\/(?=[A-Z]|$)/) 您需

我想使用javascript拆分函数拆分//B/C字符串

但它的输出是[A,B,C],但我的预期输出是

["A/", "B", "C"]

我是如何使用javascript实现这一点的?

我更新了@Tushar answer,并尝试了这一方法。添加了\b以匹配前斜杠和单词边界,例如[a-z]和[0-9]

"A//B/C".split(/\/\b/)
尝试使用RegExp/\/?=[A-Z]|$/匹配/if后跟A-Z或输入结束

"A//B/C".split(/\/(?=[A-Z]|$)/)

您需要在当前字符为/而下面的字符不是/的位置拆分字符串。但是,正则表达式不应使用第二个负条件。换句话说:它不应该被视为delimeter。为此,您可以使用所谓的前瞻。有积极的展望,也有消极的展望。这里我们需要一个否定的,因为我们想表达的是不跟在后面的。语法是:?!,然而,这是不应该“跟随”的

好了:/\/\//

适用于您的示例:


您不需要带split的g标志,默认情况下,每次出现时它都会拆分;A//B/C.split//\//给出[A,B,C]@RobGWhy你期望[A/,B,C]吗?请解释为什么第一个/不应该产生分割。你的正则表达式应该与a//a//B/C/.split/\/?=[a-Z]|$/给出[a/,B,C],但a//B/C/.split/\/\B/给出[a/,B,C/]@lintocheran是的。预期的结果是什么?A//B/C/不出现在,也不是问题中描述的A//B/C/的预期结果?抱歉,我期望模式不是静态的one@lintocheeran对不起,我期望的模式不是静态模式?你说的模式是什么意思?什么是模式?你说不是静态的是什么意思?A//B/C/.split/\/?!\/;给出[A/,B,C],这不是像[A-Z]/那样的匹配模式,我问OP如何处理这种情况。如果A/应该导致i[A/],那么我的答案是不正确的,应该使用boundary provide这个词。或者类似地,这将起作用:/\/?=[^/]/\b匹配a,似乎/本身就是一个边界,但/后跟/不是边界,因为第一个/不是单词字符。很有趣。是的,它似乎是这样工作的。因为第一个正斜杠本身就是一个单词边界,就像你说的:
"A//B/C".split(/\/(?=[A-Z]|$)/)
"A//B/C".split(/\/(?!\/)/); // ["A/", "B", "C"]