微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过相同数量的元音和辅音进行正则表达式验证

如何解决通过相同数量的元音和辅音进行正则表达式验证

谁能告诉我如何通过 javascript 中的 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"));
,

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

  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

,

以下代码可用于验证:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。