如何使用Regex匹配单词开头元音,实现辅音及辅音簇开头检测功能
你当前的代码存在两个核心问题:
- 正则
/^[aieou]/的匹配逻辑和需求相反:它会匹配以元音开头的字符串,而你需要识别的是以辅音/辅音簇开头的字符串 - 返回值不符合要求:
match()方法返回的是匹配结果数组或null,不是你需要的布尔值true/false
修正方案
直接用正则的test()方法做判断即可,要匹配辅音/辅音簇开头,只需要检测字符串首字符不属于元音列表即可,还可以加i修饰符兼容大小写场景:
function translatePigLatin(str) { // ^匹配字符串开头,[^aeiou]匹配非元音字符,i修饰符不区分大小写 const regExp = /^[^aeiou]/i; return regExp.test(str); } // 测试用例 console.log(translatePigLatin("california")); // 输出 true,c是辅音 console.log(translatePigLatin("apple")); // 输出 false,a是元音 console.log(translatePigLatin("school")); // 输出 true,sc是辅音簇 console.log(translatePigLatin("Orange")); // 输出 false,大写元音也能正确识别
辅音簇本质是多个连续辅音开头,首字符必然是辅音,所以只要首字符非元音就符合你的判断要求,不需要额外处理多字符辅音簇的匹配逻辑。
内容的提问来源于stack exchange,提问作者Mohamed Zahour
相关产品推荐
相关产品推荐

