Javascript 使用.match和.search之间的差异
对不起,这是一个愚蠢的问题,但我在任何地方都找不到 我将此用于coderbyte: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
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()
符号不同),方括号是正则表达式要匹配的一系列字符
参考资料: