如何使用正则表达式拆分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