我有一个很长的Javascript字符串,其中包含以下字母:
"aapaalaakaaiartaxealpyaaraa"
此字符串实际上是3个字母单词的链式列表:"aap","aal","aak","aai", "art", "axe","alp", "yaa" and "raa"
实际上我有许多这些字符串,字长不同,长度可达2000字,所以我需要最快的方式来获取所有字符串以某个字符串开头的单词。因此,当搜索以"aa"
开头的所有单词时,它应返回:
"aap","aal","aak" and "aai"
有没有办法用正则表达式做到这一点?非常重要的是它只匹配每个3个字母的单词,因此之间的匹配不应计算在内,因此不应返回"aar"
,也不应返回"yaa"
或"raa"
。
答案 0 :(得分:2)
简单的方法:
var results = [];
for (var i = 0; i < str.length; i += 3) {
if (str.substring(i, i + 2) === "aa") {
results.push(str.substring(i, i + 3));
}
}
不要问它是否是最快的 - 首先检查它是否足够快。 :)
答案 1 :(得分:2)
怎么样:
var str = 'aapaalaakaaiartaxealpyaaraa';
var pattern = /^aa/;
var result = str.match(/.{3}/g).filter(function(word) {
return pattern.test(word);
});
console.log(result); //=> ["aap","aal","aak","aai"]
答案 2 :(得分:1)
"aapaalaakaaiartaxealpyaaraa".replace(/\w{3}|\w+/g,function(m){return m.match(/^aa/)?m+',':','}).split(',').filter(Boolean)