我需要一个与一个字符匹配的正则表达式(或任何其他东西)对象,以及跟随它的同一个字符的多个实例,直到它到达一个新字符。
理想情况下,我需要一个函数来返回输入字符串中找到的所有连续字符的数组。它应该返回这样的东西。
> like_characters("Hello?");
Array ["H", "e", "ll", "o", "?"]
> like_characters("1234442332111???");
Array ["1", "2", "3", "444", "2", "33", "2", "111", "???"]
我没有 使用正则表达式 - 任何"分裂"字符更改的字符串将起作用。它最好是一个低字节的代码,因为我正在处理一个空间有限的小组项目。
str.split(/\d*/)
str.split(/\d+/)
/(\d)+\1/
这几乎是我所有的(坦白说,我甚至感到惊讶,我甚至已经走到这一步 - 正则表达的领域是如此模糊)。
答案 0 :(得分:3)
正则表达式就像
一样简单.match(/(.)\1*/g)
它做什么 - 它匹配一个字符和任何相同字符的数字(包括零)。
"Hello?".match(/(.)\1*/g)
// ["H", "e", "ll", "o", "?"]
答案 1 :(得分:3)
function splitWithRepeats(str) {
return str.match(/(.)\1*/g);
}
splitWithRepeats('Hello!'); // => ["H", "e", "ll", "o", "!"]
splitWithRepeats('Heeeelllllloooooo!'); // => ["H", "eeee", "llllll", "oooooo", "!"]