使用正则表达式计算字符串中的元音

时间:2015-11-24 18:32:26

标签: javascript regex

我刚开始学习JavaScript而且我被困在正则表达式中。该程序应该计算输入字符串中的元音数量并显示元音。

如果元音没有放在一起,程序运行正常但如果元音一起出现则不能给出正确的值。 例如" tree"。元音将显示为" ee"和计数将是1。

Type a word here : <input type="text" id="word1">
<input type="button" value="Vowels" onclick="Vowels()">
function Vowels(){
  var String1 = document.getElementById('word1').value;
  var re = new RegExp(/[aeiou]+/gi);
  var Vowels1 = String1.match(re);
  alert(Vowels1);
  if (Vowels1.length>=1)
  {
    alert("The number of vowels are:" + Vowels1.length);
  }
  else
  {
    alert("No vowels in the word"); 
  }
}

请帮我找到正确的正则表达式,而else语句不起作用。请帮我解决。

2 个答案:

答案 0 :(得分:3)

丢失+ - 您的表达式将连续元音组作为单个匹配。

var re = /[aeiou]/gi;

对于else,如果没有匹配项(Vowels1null),此行将失败:

if (Vowels1.length>=1)

此时,脚本停止执行,我们从不运行else块。

所以改成它:

if (Vowels1 && (Vowels1.length > 0))

答案 1 :(得分:1)

试试这个方法

function getVowels(str) {
  var m = str.match(/[aeiou]/gi);
  return m === null ? 0 : m.length;
}