Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么即使捕获括号不存在,split仍返回空字符串?_Javascript_Regex_Split - Fatal编程技术网

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
。因此,它适用于特定用例,但不适用于更通用的用例。