Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.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中的字符串_Javascript_Arrays_Regex_String_Split - Fatal编程技术网

如何使用正则表达式拆分javascript中的字符串

如何使用正则表达式拆分javascript中的字符串,javascript,arrays,regex,string,split,Javascript,Arrays,Regex,String,Split,我正试着做这样的事情 function findLongestWord(str) { var wordContainer = str.split(/\b/) || 0; document.write(wordContainer); } findLongestWord("The quick brown fox jumped over the lazy dog"); 但这又回来了 The, ,quick, ,brown, ,fox, ,jumped, ,over, ,the, ,lazy, ,d

我正试着做这样的事情

function findLongestWord(str) {
var wordContainer = str.split(/\b/) || 0;
document.write(wordContainer);
}

findLongestWord("The quick brown fox jumped over the lazy dog");
但这又回来了

The, ,quick, ,brown, ,fox, ,jumped, ,over, ,the, ,lazy, ,dog
但是如果我这样做的话

function findLongestWord(str) {
var wordContainer = str.split(" ") || 0;
document.write(wordContainer);
}

findLongestWord("The quick brown fox jumped over the lazy dog");
它按预期工作并返回

The,quick,brown,fox,jumped,over,the,lazy,dog

那么,为什么在拆分中使用/\b/与使用“”不同呢

\b
a匹配零宽度单词边界,例如字母和空格之间的边界

使用
split(“”)
时,仅匹配空格:


\b
a匹配零宽度单词边界,例如字母和空格之间的边界

使用
split(“”)
时,仅匹配空格:


因为
是文字空间,
\b
是单词边界

如果第一个字符是单词字符,则单词边界出现在字符串中第一个字符之前;如果最后一个字符是单词字符,则单词边界出现在字符串中最后一个字符之后;如果最后一个字符是单词字符,则单词边界出现在字符串中两个字符之间,其中一个是单词字符,另一个不是单词字符,这意味着字符串的边界如下所示:

"The\b \bquick\b \bbrown\b \bfox\b \bjumped\b \bover\b \bthe\b \blazy\b \bdog"
换句话说,在单词的开头和结尾匹配
\b
,在拆分时也会得到空格,最后得到

[“那个”、“那个”、“快”、“那个”、“棕色”、“那个”、“狐狸”、“那个”、“跳下去”、“那个”、“那个”、“那个”、“懒”、“那个”、“那个狗”]


如果你想在边界上分割单词,你必须在中间添加它们,中间的任何东西,如<代码> /\b\b/< /c>

,因为<代码>“/c>是文字空间,<代码> \b/c>是单词边界。

如果第一个字符是单词字符,则单词边界出现在字符串中第一个字符之前;如果最后一个字符是单词字符,则单词边界出现在字符串中最后一个字符之后;如果最后一个字符是单词字符,则单词边界出现在字符串中两个字符之间,其中一个是单词字符,另一个不是单词字符,这意味着字符串的边界如下所示:

"The\b \bquick\b \bbrown\b \bfox\b \bjumped\b \bover\b \bthe\b \blazy\b \bdog"
换句话说,在单词的开头和结尾匹配
\b
,在拆分时也会得到空格,最后得到

[“那个”、“那个”、“快”、“那个”、“棕色”、“那个”、“狐狸”、“那个”、“跳下去”、“那个”、“那个”、“那个”、“懒”、“那个”、“那个狗”]


如果你想在边界上分割单词,你必须同时添加它们,中间的任何东西,如<代码> /\B\B/< /COD> < /P> <代码> \b/COD>是单词边界,空间与空间匹配。因此,您得到的结果没有什么奇怪的地方。而且您的默认大小写也没有用,因为split将始终返回一个数组

\b
是单词边界,并且空格与空格匹配。所以,你得到的结果没有什么奇怪的。而且你的默认案例也没用,因为split将始终返回一个arrayPerfect答案,现在我知道我错了。谢谢mate完美的答案,现在我知道我错了。谢谢mate