通过以下脚本,我尝试检测该单词的多次出现,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));
通过以下脚本,我尝试检测该单词的多次出现,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));
您的正则表达式错误,您搜索 b、l、u 或 e 出现一次或多次。
你的正则表达式应该是:
/blue/g
然后使用循环:
var finder = /blue/g;
var result;
while( ( result = finder.exec( str ) ) ){
console.log( result );
}
只要结果为空,您就需要执行正则表达式。如果没有 g 标志,它就不会像这样工作。查找器有一个 lastIndex 属性,它指示最后一个匹配的索引,所以如果你想重用正则表达式而不重新创建它,只需将此属性设置回零。
失去角色类
var reg_5 = /blue/g;
它打印是因为ine
的第一个匹配项是in 。请参阅菲利普的答案,了解为什么会这样以及正则表达式应该是什么。/[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.' );