根据字符数和空格数使用正则表达式拆分字符串

时间:2016-10-27 04:40:08

标签: javascript regex string

我需要根据一些字符将一个字符串拆分成一个数组,而不是删掉一个字。

我一直在用这个:

Children

此代码的问题在于,有时我会得到一个长度超过17个字符的字符串,如果空格接近最新字符的话。

例如,

CollectionChanged

分为:

var charPerLine = 17;
var regex = new RegExp('^(.{'+charPerLine+'}\\S*\\s+', 'g');
var output = str.replace(regex, "$&@").split(/\s+@/);

但是第一个字符串超过17个字符,我需要将它拆分为:

var str = "I want you to do something else instead.";

它还必须使用标点符号和单/双引号

有什么建议吗?

2 个答案:

答案 0 :(得分:4)

(?=(\b.{1,17}\b))\1

您可以使用它并替换为$1\n。请参阅演示。

https://regex101.com/r/ff7iZp/1

答案 1 :(得分:1)

您可以在第一个正则表达式中添加一个单词边界断言\b,这样如果它当前位于新单词的开头,它就不会使\S*前进:



var str = "I want you to do something else instead";

var charPerLine = 15;
var regex = new RegExp('.{'+charPerLine+'}(?:\\b|\\S*\\s+)', 'g');
var output = str.replace(regex, "$&@").split(/\s*@\s*/);

console.log(output);