【问题标题】:How to Split string In javascript Using regex如何使用正则表达式在javascript中拆分字符串
【发布时间】:2016-05-01 21:44:13
【问题描述】:

我正在尝试做这样的事情

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

那么为什么在 split 中使用 /\b/ 与使用 " " 不同?

【问题讨论】:

  • \b是单词边界,空格匹配空格。所以,你得到的结果没有什么奇怪的。
  • 你的默认情况也是无用的,因为 split 总是会返回一个数组

标签: javascript arrays regex string split


【解决方案1】:

因为" " 是文字空格,而\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/

【讨论】:

  • 完美答案,现在我知道我错了。谢谢队友
【解决方案2】:

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

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

Docs on Regex from MDN

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 2022-01-15
    • 2011-12-28
    相关资源
    最近更新 更多