如何从已知标记列表中标记string?

我有一个令牌列表,用于生成人造日语单词,如下所示:

var syllables = ["chi","tsu","shi","ka","ki","ku","ke","ko","ta","te","to","sa","su","se","so","na","ni","nu","ne","no","ha","hi","fu","he","ho","ma","mi","mu","me","mo","ya","yu","yo","ra","ri","ru","re","ro","wa","wo"]; 

给定一个像“yoniyotachihochinitarehakemukenushihofure”,是否有可能将它分割成一个数组,像“[yo”,“ni”,“yo”…使用RegExps?

到目前为止,我有

  var s=""; for(var i=0;i<syllables.length;i++) s+=("("+syllables[i]+")"); s+="+"; console.log(s); var splitregex = new RegExp(s,"gi"); console.log(str.split(splitregex)); 

我回来了“['yoniyotachihochinitarehakemukenushihofure']”

       

网上收集的解决方案 "如何从已知标记列表中标记string?"

 var syllables = ["chi","tsu","shi","ka","ki","ku","ke","ko","ta","te","to","sa","su","se","so","na","ni","nu","ne","no","ha","hi","fu","he","ho","ma","mi","mu","me","mo","ya","yu","yo","ra","ri","ru","re","ro","wa","wo"]; var r = new RegExp(syllables.join('|'), 'g'); var str = 'yoniyotachihochinitarehakemukenushihofure'; console.log(str.match(r)); // return ["yo", "ni", "yo", "ta", "chi", "ho", "chi", "ni", "ta", "re", "ha", "ke", "mu", "ke", "nu", "shi", "ho", "fu", "re"] 

http://jsfiddle.net/T8LeY/

说明:它生成正则expression式/chi|tsu|.../g ,它简单地匹配列表中的每个音节