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

How to Split string In javascript Using regex

本文关键字:拆分 字符串 javascript 何使用 正则表达式      更新时间:2023-09-26

我正试图做一些类似的事情

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/与在split中使用"不同呢?

因为" "是一个文字空间,而'b是一个单词边界。

如果第一个字符是单词字符,则单词边界出现在字符串的第一个字符之前,如果最后一个字符是字符,则在字符串的最后一个字符串之后再次出现,并且也出现在字符串中的两个字符之间,其中一个是单词字符而另一个不是单词字符,这意味着您的字符串看起来像这样有边界:

"The'b 'bquick'b 'bbrown'b 'bfox'b 'bjumped'b 'bover'b 'bthe'b 'blazy'b 'bdog"

换句话说,你在单词的开头和结尾匹配'b,当你分裂时,你也得到了空格,最后得到了

["The"," ","quick"," ","brown"," ","fox"," ","jumped"," ","over"," ","the"," ","lazy"," ","dog"]

如果要在边界上拆分单词,则必须添加这两个单词以及中间的任何单词,如/'b.'b/

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

而使用split(' ')只匹配空格:

来自MDN 的Regex文档