通过以下脚本,我尝试检测单词blue
的多次出现,但它只打印e
。这是为什么 ?
var reg_5 = /[blue]+/g;
var str = "Sky was dark and the mood was blue.Sky was dark but the water felt blue.";
document.write("<br / >" + reg_5.exec(str));
答案 0 :(得分:2)
你的正则表达式错误,你搜索b,l,u或e出现一次或多次。
你的正则表是:/blue/g
然后使用循环:
var finder = /blue/g;
var result;
while( ( result = finder.exec( str ) ) ){
console.log( result );
}
只要结果变为null,就需要执行regexp。没有g标志就不会这样。 finder有一个lastIndex属性,指示最后一个匹配的索引,因此如果你想重用regexp而不重新创建它,只需将此属性设置为零。
答案 1 :(得分:1)
丢失角色类
var reg_5 = /blue/g;
答案 2 :(得分:0)
它会打印e
,因为/[blue]+/g;
中str
的第一个匹配项是e
中的the
。请参阅菲利普的回答,了解为什么以及正则表达式应该是什么。
如果您要全局匹配,即查找多个匹配项,并且您没有使用捕获组()
,则可以使用match
来获取所有匹配项的数组。
var m = str.match( /blue/g );
var n = m == null ? 0 : m.length;
console.log( 'The word "blue" appeared ' + n + ' times.' );