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

luaexgnf  于 2023-01-04  发布在  Java
关注(0)|答案(3)|浏览(101)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

1年前关闭。
Improve this question
有人能告诉我如何通过javascript中的正则表达式表单验证来检查这个吗?
学生姓名只能包含字母。元音和辅音的数目必须相等。

b5buobof

b5buobof1#

我不认为你可以只使用正则表达式。
我的解决方案是替换字符串中所有非元音的字符并返回其长度,对于辅音也是如此,然后你所要做的就是检查辅音的个数是否与元音的个数匹配。

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

z9smfwbn2#

您需要创建一个函数来完成两件事:
1.检查是否所有字符都是字母
1.比较元音和辅音的数量
您将需要以下表达式:

  • /^[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
nhaq1z21

nhaq1z213#

以下代码可用于验证:

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

相关问题