Javascript 为什么即使捕获括号不存在,split仍返回空字符串?
我的代码:Javascript 为什么即使捕获括号不存在,split仍返回空字符串?,javascript,regex,split,Javascript,Regex,Split,我的代码: var str = '<td>a</td><td>b</td>'; console.log(str.split(/<\/?td>/g)); var str='ab'; log(str.split(//g)); 输出[,“a”,“b”,“,”] 为什么会出现空字符串 引用 如果分隔符是包含捕获括号的正则表达式,则每次匹配分隔符时,捕获括号的结果(包括任何未定义的结果)都会拼接到输出数组中。但是,并非所有浏览器都支持此功能
var str = '<td>a</td><td>b</td>';
console.log(str.split(/<\/?td>/g));
var str='ab';
log(str.split(//g));
输出<代码>[,“a”,“b”,“,”]
为什么会出现空字符串
引用
如果分隔符是包含捕获括号的正则表达式,则每次匹配分隔符时,捕获括号的结果(包括任何未定义的结果)都会拼接到输出数组中。但是,并非所有浏览器都支持此功能
但是,这显然不相关,因为不存在捕获括号。让我们看一个更简单的例子:
”,a,,b,“.split(,”)
//[、“a”、“b”、“a”]
这跟你的案子有什么关系?好的,如果两个分隔符相邻,一个前导分隔符或一个尾随分隔符,那么结果中会出现一个空字符串,因为它们之间就是空字符串(为了保持
x.split(a).join(a)
应该等于x
)。在你的情况下,中间的代码< >代码>和<代码> <代码>都匹配,这意味着右边有2个分隔符,导致中间的空字符串。开头的
和结尾的
导致一个前导和尾随分隔符,导致开头和结尾的空字符串。让我们看一个更简单的示例:
”,a,,b,“.split(,”)
//[、“a”、“b”、“a”]
这跟你的案子有什么关系?好的,如果两个分隔符相邻,一个前导分隔符或一个尾随分隔符,那么结果中会出现一个空字符串,因为它们之间就是空字符串(为了保持
x.split(a).join(a)
应该等于x
)。在你的情况下,中间的代码< >代码>和<代码> <代码>都匹配,这意味着右边有2个分隔符,导致中间的空字符串。开头的
和结尾的
引出一个前导和尾随分隔符,在开头和结尾引出空字符串。另一个答案给出了原因,我将为您提供一个快速解决方案。
如果要从字符串中删除“”和“”,只需将它们替换为零(删除它们)。然后拆分出子字符串
str.replace(/<\/?td>/g, "").split("")
str.replace(//g,“”).split(“”)
另一个答案告诉你原因,我会给你一个快速的解决方案。
如果要从字符串中删除“”和“”,只需将它们替换为零(删除它们)。然后拆分出子字符串
str.replace(/<\/?td>/g, "").split("")
str.replace(//g,“”).split(“”)
如果每个
中只有一个字符,则效果很好,但如果是两个或更多字符,则不起作用。例如,aabb
。因此,它适用于特定的用例,但不适用于更一般的用例。如果每个
中只有一个字符,则效果很好,但如果是两个或更多字符,则不起作用。例如,aabb
。因此,它适用于特定用例,但不适用于更通用的用例。