我在写这个问题的过程中,我想我已经找到了我所有问题的答案,但我还是想发帖,因为它可能对他人有用,而且更多的解释可能会有所帮助。
我尝试使用具有前瞻的正则表达式和javascript函数split。 由于某种原因,即使在调用match时找到匹配项,它也无法拆分字符串。 我最初认为问题来自于我的正则表达式中使用了前瞻。 这里是一个简化的示例:
不起作用:
"aaaaBaaaa".split("(?=B).");
可行:
"aaaaBaaaa".match("(?=B).");
看起来问题在于在分割示例中,传递的字符串没有被解释为正则表达式。 使用斜杠而不是引号似乎可以解决这个问题。
"aaaaBaaaa".split(/(?=B)./);
我用以下看起来有些愚蠢的例子证实了我的理论:
"aaaaaaaa(?=B).aaaaaaa".split("(?=B).");
还有其他人认为match函数假定输入是正则表达式而split函数不做这样的假设,这是否有些奇怪?