JavaScript 实现判断一个全是小写字母的字符串是否符合如下规则
发布日期:2021-05-10 22:43:42 浏览次数:26 分类:精选文章

本文共 1589 字,大约阅读时间需要 5 分钟。

题干:判断一个全是小写字母的字符串是否符合如下规则

  • 1.至少包含一个元音字母;
  • 2.不能有三个连续的字母都是元音字母;
  • 3.不能有三个连续的字母都是辅音字母;
  • 4.不能有两个连续的字母是一样的,但是 e 字母和 o 字母除外。

说明:

元音字母为:a, e, i, o, u, 其他都为辅音字母。

方法一:

function isMatching(str) {
if (typeof str !== 'string') {
console.error("请传入字符串");
return false;
}
if (!isVowel(str)) {
console.log("第1条不匹配");
return false;
}
if (!rulesTwo(str)) {
console.log("第2或3条不匹配");
return false;
}
if (!rulesThree(str)) {
console.log("第4条不匹配");
return false;
}
return true;
}

函数说明:

isVowel 检查字符串是否包含任意元音字母。
rulesTwo 检查是否存在三个连续的元音字母。
rulesThree 检查是否存在三个连续的辅音字母。
rulesThree 进一步检查连续相同字母,除了 e 和 o。

方法二:

// 正则表达式方法
// 至少包含一个元音字母
const class1 = new RegExp('[aeiou]', 'ig');
// 三元音连续不允许
const class2 = new RegExp('[aeiou]{3}', 'ig');
// 三辅音连续不允许
const class3 = new RegExp('[^aeiou]{3}', 'ig');
// 不能有连续相同字母(以o与e无关)
const class4 = new RegExp('([^ao]+)\\1', 'ig');
function test(value) {
const msg = [];
if (!class1.test(value)) {
msg.push('至少包含一个元音字母');
}
if (class2.test(value)) {
msg.push('不能连续三个元音字母');
}
if (class3.test(value)) {
msg.push('不能连续三个辅音字母');
}
if (class4.test(value)) {
msg.push('不能有两个连续相同字母,除了e和o');
}
return msg.length === 0;
}

测试结果:

测试字符串 "aq"

返回:
{ value: 'aq', msg: [] }

测试字符串 "aaq"

返回:
{ value: 'aaq', msg: ['不能连续三个辅音字母'] }

测试字符串 "qqq"

返回:
{ value: 'qqq', msg: ['不能连续三个辅音字母'] }

测试字符串 "aaa"

返回:
{ value: 'aaa', msg: ['不能连续三个元音字母'] }
上一篇:表格对比 slice(),splice(),split(),substring(),substr()
下一篇:21年3月-北京-内推京东iot团队面试题

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2025年05月11日 07时38分17秒