Javascript 使用.match和.search之间的差异

Javascript 使用.match和.search之间的差异,javascript,Javascript,对不起,这是一个愚蠢的问题,但我在任何地方都找不到 我将此用于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

对不起,这是一个愚蠢的问题,但我在任何地方都找不到 我将此用于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()));                            
我理解其中的大部分,但是正斜杠和方括号是做什么的呢。还有,gi做什么

.search和.match之间有什么区别?我应该在什么条件下使用what in?

引用:

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

在这种情况下,仅仅知道一个元音(即“a”、“e”、“i”、“o”或“u”——即所谓的字符类表达式,
[aeiou]
)在字符串中是不够的,因为函数的目的是计算元音

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

然而,这个函数中有一个bug。As返回
null
如果未找到匹配项,则如果param string根本没有元音,则函数将抛出错误:

VowelCount('ddd'); // TypeError: Cannot read property 'length' of null
它必须通过对匹配结果的额外检查来修复

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

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

参考资料:


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

gi意味着搜索将是全局的(所有发生的情况)且不区分大小写。