通过相等数量的元音和辅音进行正则表达式验证[关闭]

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");

【讨论】:

以上是关于通过相等数量的元音和辅音进行正则表达式验证[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

德语发音教程:元音和辅音

如何检查Java中的句子中有多少个辅音和元音?

正则表达式——字符组运算

(高职专科组)第十一届蓝桥杯省模拟赛答案给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母。

(高职专科组)第十一届蓝桥杯省模拟赛答案给定一个单词,请计算这个单词中有多少个元音字母,多少个辅音字母。

最全面的德语元音教程