这里讲的兼容性问题主要指String的API在正则表达式的处理上不同。
匹配结果的兼容性
第一个问题:在IE<=8中,如果split()方法的限定符是正则表达式,返回的数组不包含空值元素,而如果限定符用字符串表示则没有这样的问题:
",,ab,,".split(","); // output ["","","ab","",""]
",,ab,,".split(/,/); // output ["ab"]
第二个问题:正则表达式中可能有分组,但是这个分组可能并没有参与(也就是没有匹配到任何子字符串)。关于这个分组的结果:IE<=8返回的不是undefined,而Firefox2会返回空字符串,Safari3则直接什么也不返回(结果导致数组元素个数减少)。
"y".split(/(x)?y/); // ECMA :output ["",undefined,""]
"y".split(/(x)?y/); // IE8 :output []
如果是调用字符串的match方法,返回的结果也不同: