1

通过以下脚本,我尝试检测该单词的多次出现,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));
4

3 回答 3

2

您的正则表达式错误,您搜索 b、l、u 或 e 出现一次或多次。

你的正则表达式应该是:

/blue/g

然后使用循环:

var finder = /blue/g;
var result;
while( ( result = finder.exec( str ) ) ){
    console.log( result );
}

只要结果为空,您就需要执行正则表达式。如果没有 g 标志,它就不会像这样工作。查找器有一个 lastIndex 属性,它指示最后一个匹配的索引,所以如果你想重用正则表达式而不重新创建它,只需将此属性设置回零。

于 2013-02-24T11:05:17.030 回答
1

失去角色类

var reg_5 = /blue/g;

于 2013-02-24T11:05:11.977 回答
0

它打印是因为ine的第一个匹配项是in 。请参阅菲利普的答案,了解为什么会这样以及正则表达式应该是什么。/[blue]+/g;strethe

如果您正在全局匹配,即查找多个匹配项,并且您没有使用捕获组(),则可以使用match获取所有匹配项的数组。

var m = str.match( /blue/g );
var n = m == null ? 0 : m.length;

console.log( 'The word "blue" appeared ' + n + ' times.' );   
于 2013-02-24T11:47:48.760 回答