use*_*743 19 javascript regex split lookahead
自从我开始写这个问题以来,我想我已经找到了每个问题的答案,但我认为无论如何我都会发帖,因为它可能对其他人有用,更多的澄清可能会有所帮助.
我试图使用带有javascript函数拆分的前瞻性的正则表达式.由于某种原因,即使在我调用匹配时找到匹配项,它也不会拆分字符串.我原本以为问题来自于我的正则表达式中使用前瞻.这是一个简化的例子:
不起作用:
"aaaaBaaaa".split("(?=B).");
Run Code Online (Sandbox Code Playgroud)
作品:
"aaaaBaaaa".match("(?=B).");
Run Code Online (Sandbox Code Playgroud)
问题似乎是在拆分示例中,传递的字符串未被解释为正则表达式.使用正斜杠而不是引号似乎可以解决问题.
"aaaaBaaaa".split(/(?=B)./);
Run Code Online (Sandbox Code Playgroud)
我用以下愚蠢的例子证实了我的理论:
"aaaaaaaa(?=B).aaaaaaa".split("(?=B).");
Run Code Online (Sandbox Code Playgroud)
有没有其他人认为匹配函数假设你有一个正则表达式,而split函数没有?
Jam*_*mes 31
String.split接受字符串或正则表达式作为其第一个参数.该String.match方法仅接受正则表达式.
我想这String.match会尝试和任何传递的东西一起工作; 因此,如果您传递一个字符串,它会将其解释为正则表达式.该String.split方法没有做到这一点,因为它可以接受正则表达式和字符串; 在这种情况下,猜测是愚蠢的.
编辑 :(来自:"JavaScript:权威指南")
String.match需要使用正则表达式.传递的参数需要是一个RegExp指定要匹配的模式的对象.如果此参数不是a RegExp,则首先将其传递给RegExp()构造函数,然后将其转换为1 .