【问题标题】:Regex validation by equal number of vowels and consonants [closed]通过相等数量的元音和辅音进行正则表达式验证[关闭]
【发布时间】:2021-07-29 21:33:54
【问题描述】:

谁能告诉我如何通过 javascript 中的正则表达式表单验证来检查这个。

学生姓名只能包含字母。元音和辅音的数量必须相等。

【问题讨论】:

  • 请向我们提供您的尝试。我们不会为您提供现成的复制粘贴答案,但如果您无法解决问题,我们可以为您提供帮助。

标签: javascript regex formvalidation-plugin html5-formvalidation


【解决方案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】:

    你需要创建一个函数来做两件事:

    1. 检查所有字符是否都是字母
    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");

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-26
        • 2013-04-12
        • 1970-01-01
        • 2011-09-14
        • 2012-01-08
        相关资源
        最近更新 更多