8

我将以下代码用于 coderbyte:

function VowelCount(str) {
    // code goes here  
    return str.match(/[aeiou]/gi).length;
}

// keep this function call here
// to see how to enter arguments in JavaScript scroll down
print(VowelCount(readline()));

我了解大部分代码,但以下部分除外:

  1. 正斜杠和方括号有什么作用?
  2. 做什么的gi
  3. search()和 和有什么不一样match()?我应该在什么条件下使用什么?
4

3 回答 3

8

引用文档

当您想知道是否在字符串中找到模式时使用 search(类似于正则表达式test方法);有关更多信息(但执行速度较慢),请使用match(类似于正则表达式exec方法)。

在这种情况下,仅仅知道元音('a'、'e'、'i'、'o' 或 'u' - 这就是所谓的字符类表达式所表达的[aeiou])是不够的字符串,因为该函数的目的是计算元音。

因此,它扫描字符串,将所有匹配项(即/g修饰符的用途)收集/i到一个数组中,而不考虑字符大小写 ( ),然后返回该数组的长度。

但是,此功能存在错误。如果没有找到匹配项,则String.match返回null,如果参数字符串根本没有元音,则该函数将引发错误:

VowelCount('ddd'); // TypeError: Cannot read property 'length' of null

必须通过额外检查匹配结果来修复它。

function vowelCount(str) {
  var vowels = str.match(/[aeiou]/gi);
  return vowels ? vowels.length : 0;
}
于 2013-09-08T19:07:53.210 回答
0

斜线分隔正则表达式 ( RegExp()) 文字(与使用new RegExp()符号相反),方括号是正则表达式要匹配的一系列字符。

参考:

于 2013-09-08T19:08:37.543 回答
0

正斜杠包装正则表达式语句。

gi意味着搜索将是全局的(所有出现)并且不区分大小写。

于 2013-09-08T19:14:34.080 回答