答案 0 :(得分:3)
结果的差异是由于正则表达式中捕获的组。如果您使用非捕获组,则两者的行为都相同:
x = new RegExp('<w:p(?: +[^>]*>|>|/>)','g')
现在split
会给出:
console.log(s.split(x))
//=> ["", "abc", "123", "qwe<w:paa>asd</w:p>zxc"]
原因是split
也将所有匹配的组放在输出数组中。
PS:您的正则表达式可以简化为:
x = /<w:p( +[^>]*>|\/?>)/g
答案 1 :(得分:0)
x = new RegExp('<\/?w:p[^>]*>', 'g')
给出
console.log(s.match(x)) == ["<w:p>", "<w:p z="asd">", "<w:p/>", "<w:paa>", "</w:p>"]
console.log(s.split(x)) == ["", "abc", "123", "qwe", "asd", "zxc"]