2013-02-22 66 views
2

我試圖返回一個字母出現在單詞中的次數。從字符串構建Javascript正則表達式

我傳遞信的功能,像這樣

function getCount(letter) 
{ 
    var pattern = '/' + letter + '/g'; 
    var matches = word.match(pattern); 
    return matches.length; 
} 

不幸的是匹配爲空,所以我無法調用它的長度,我知道,因爲我已經信出現在字經檢查發現

word.indexOf(letter) > -1 

我懷疑問題是與我建立或評估pattern

回答

8

這裏是你如何建立一個非字面正則表達式的方法:

var pattern = new RegExp(letter, 'g'); 

the MDN on building a regular expression

而且這裏有一個簡單的解決方案來算信的出現:

return word.split(letter).length-1; 
+3

如果我可以給+2的替代解決方案,我會的。我可以提供的只有+1。 – 2013-02-22 18:22:15

+0

@Kolink不幸的是,我剛剛意識到我的替代解決方案並不好。現在它不太優雅... – 2013-02-22 18:23:30

+0

或'word.split(letter).length-1'。 – MikeM 2013-02-22 18:33:30

2

你可以這樣做:

function hasClass(letter) { 
    var pattern = new RegExp(letter,'g'); // Create a regular expression from the string 
    var matches = word.match(pattern); 
    return matches; 

編號:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp

這也是在這裏得到解答:javascript new regexp from string

+0

您是否意識到這是我10分鐘前做出的答案? – 2013-02-22 18:31:21

+1

我輸入了所有內容,只是在消息出現時抓取引用,所以我只是單擊了提交。 – 2013-02-22 18:36:46

+0

對不起這個蠢事。 – Luke 2013-02-22 18:41:11