我试图在5个字符后的第一个软连字符处切一个单词,包括连字符:
这是我想出的:
new RegExp("^(.{5}[^\u00AD]+)\u00AD")
它几乎可以工作,但是在字符串的开头增加了一个额外的削减:
un-con-ven-tion-al.
[ '', 'uncon', 'ventional.' ]
seven-teen-year-old
[ '', 'seven', 'teen-year-old' ]
我想要的是:
['uncon', 'ventional.' ]
有时它也不能这样工作。
com-pany-en-cou-raged
[ '', 'com', 'pany-encouraged' ]
Rev-olu-tion-aries,”
[ '', 'Rev', 'olutionaries,”' ]
应该
['company''encouraged' ]
['Revolu","tionaries,”' ]
基本上,转到第5个字符,继续直到找到连字符,然后将其切开。
这是我的用法:
console.log(hyphened);
console.log(hyphened.split(new RegExp("^(.{6}[^\u00AD]+)\u00AD")));
最佳答案
您可以使用
var strs = ["un\xADcon\xADven\xADtion\xADal.","seven\xADteen\xADyear\xADold","com\xADpany\xADen\xADcou\xADraged","Rev\xADolu\xADtion\xADaries"]
for (var i=0; i<strs.length; i++) {
var match = strs[i].match(/^([\s\S]{5}[^\u00AD]*)\u00AD([\s\S]*)/);
if (match) {
console.log(strs[i], "=>", match[1].replace(/\xAD/g, '-'), ",", match[2].replace(/\xAD/g, '-'));
}
}
模式匹配:
^
-字符串开始([\s\S]{5}[^\u00AD]*)
-组1:软连字符以外的任意5个字符,然后是0+个字符\u00AD
-软连字符([\s\S]*)
-组2:任意0个以上的字符。