2015-11-24 127 views
1

我刚开始学习JavaScript,并且卡在正则表达式中。这个程序应该计算输入字符串中元音的数量并显示元音。使用正则表达式计算字符串中的元音

如果元音没有放在一起,但如果元音一起出现,则不会给出正确的值,程序运行良好。 例如“树”。元音将显示为“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说法是行不通的。请帮我修复它。

+1

只需删除'+'。所以'“树”.match(/ [aeiou]/gi).length'给你'2' –

回答

1

尝试此方法

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

就失去了+ - 连续元音你的表情是捡组作为一个单一的比赛。

var re = /[aeiou]/gi; 

至于else,当没有比赛这条线都会失败(Vowels1null):

if (Vowels1.length>=1) 

在这一点上,脚本停止执行,我们从来没有运行else块。

所以将其更改为:

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

感谢它现在工作正常。你能不能建议一些材料来学习JavaScript。 – Sam

相关问题