通过相等数量的元音和辅音进行正则表达式验证[关闭]
Posted
技术标签:
【中文标题】通过相等数量的元音和辅音进行正则表达式验证[关闭]【英文标题】:Regex validation by equal number of vowels and consonants [closed] 【发布时间】:2021-07-29 21:33:54 【问题描述】:谁能告诉我如何通过 javascript 中的正则表达式表单验证来检查这个。
学生姓名只能包含字母。元音和辅音的数量必须相等。
【问题讨论】:
请向我们提供您的尝试。我们不会为您提供现成的复制粘贴答案,但如果您无法解决问题,我们可以为您提供帮助。 【参考方案1】:我认为你不能只使用 Regex 来做到这一点。
我的解决方案
替换字符串中不是元音的所有字符并返回它的长度,对于辅音也是如此。那么你所要做的就是检查辅音的数量是否与元音匹配。
const getNumberOfVowels = (string) => string.replace(/[^aeiouAEIOU]/g, "").length;
const getNumberOfConsonants = (string) => string.replace(/[aeiouAEIOU]/g, "").length;
const isAValidName = (name) =>
const vowels = getNumberOfVowels(name);
const consonants = getNumberOfConsonants(name);
return vowels === consonants;
console.log(isAValidName("Adam"));
【讨论】:
【参考方案2】:你需要创建一个函数来做两件事:
-
检查所有字符是否都是字母
比较元音和辅音的数量
您将需要以下表达式:
/^[a-z]+$/i
– 只有字母字符(不区分大小写)
/[aeiouy]/ig
– 只有元音
/[^aeiouy]/ig
– 只有辅音
const isValidName = (name) =>
/^[a-z]+$/i.test(name) &&
name.match(/[aeiouy]/ig).length === name.match(/[^aeiouy]/ig).length;
console.log(isValidName('Gene')); // Valid
console.log(isValidName('Abby')); // Valid
console.log(isValidName('Charles')); // Invalid
【讨论】:
【参考方案3】:以下代码可用于验证:
const validateStudentName = (name) =>
const regExp = /[^a-zA-Z]/;
const isEven = name.length % 2 == 0;
const vowels = ['a', 'e', 'i', 'o', 'u'];
const vowelCount = [...name].reduce((sum, char) => vowels.includes(char.toLowerCase()) ? sum + 1 : sum, 0);
console.log(!regExp.test(name) && isEven && vowelCount === name.length / 2);
validateStudentName("abaci");
【讨论】:
以上是关于通过相等数量的元音和辅音进行正则表达式验证[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
(高职专科组)第十一届蓝桥杯省模拟赛答案给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母。