Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 - Fatal编程技术网

Javascript 为什么split函数在以下情况下创建三个子字符串而不是两个子字符串?

Javascript 为什么split函数在以下情况下创建三个子字符串而不是两个子字符串?,javascript,regex,Javascript,Regex,尽管下面的代码将给定字符串“hello_world”拆分为“hello”和“world”,但仍创建了第三个空字符串。因此length属性在下面的代码中显示3而不是2。如何创建第三个空字符串(尽管未查找) <script type="text/javascript"> var str = "hello_world"; var res = str.split(/_(.+)/); alert(res); alert(res.length); </script> va

尽管下面的代码将给定字符串“hello_world”拆分为“hello”和“world”,但仍创建了第三个空字符串。因此length属性在下面的代码中显示3而不是2。如何创建第三个空字符串(尽管未查找)

<script type="text/javascript">
 var str = "hello_world";
 var res = str.split(/_(.+)/);
 alert(res);
 alert(res.length);
</script>

var str=“你好,世界”;
var res=str.split(/(+)/);
警报(res);
警报(res.length);
此模式匹配字符及其后的一个或多个任意类型的字符,因此基本上它匹配您输入的\u world

但是您的模式在括号()中有一个捕获的组,它与单词world匹配,因此单词world保留在拆分的结果中


如果删除括号,它将使用\u world作为分隔符,结果是长度为2的数组,带有hello和空字符串当分隔符正则表达式中有捕获组时,捕获组的匹配项将包含在拆分结果中

所发生的事情是正则表达式正在匹配
\u world
,因此它将字符串拆分为分隔符前面的
hello
,后面的
“”
。因此,如果您没有捕获组(即,如果regexp只是
/.+/
),结果将是

["hello", ""]
因为您有一个捕获组,所以它也会拼接匹配的数据。该组匹配
world
,因此结果为

["hello", "world", ""]

您可能需要
str.split(//)您现在拥有的是“按
和其后出现的任何字符分割”。我很惊讶你没有以“你好”和空字符串结束。。。或者只是
str.split(“'')
,但是当使用捕获组时,他可能意味着什么。我不明白这如何解释为什么在分割的末尾有一个空字符串。