JavaScript正则表达式在"网球"这个词上神秘失败

 傻嫙嵂 发布于 2023-02-08 18:39

我们在JavaScript中编写了一个小脚本来查找重复项或潜在的重复项.这个剧本有时会起作用,但是对于像"网球"这样的词语,它会神秘地失败.我们正在使用jQuery.

脚步:

1)点击这里的JSFiddle演示:http://jsfiddle.net/6Hgex/.

2)单击" 检查Dupes".

3)在重复单词部分下,单词网球应列出两个条目,一个用于观看网球比赛,一个用于网球比赛.但是,由于某些原因,在检查服务网球短语时正则表达式失败- 除非我们使用Chrome开发者工具替换变量和硬编码值.当我们使用断点时,所有值看起来都是正确的,但RegEx对于这个短语失败了.

我们做错了什么?

谢谢!

JavaScript的:

    // Init page
    $( document ).ready( function() {
        init();
    });


    function init() {
        $( '#box .button.dupe_clues' ).on( 'mousedown', function() {
            var dupe_words_list = $( '.list.dupe_words' );
            dupe_words_list.empty();
            var dupe_words = ['tennis'];
            var unique_clues = ['watching tennis match', 'serving tennis ball'];
            $( dupe_words ).each( function() {
                var highlighted_clues = highlight_dupe_word( unique_clues, this );
                dupe_words_list.append( '
' + this + ': ' + highlighted_clues + '
' ); }); }); } function highlight_dupe_word( clues, word ) { var list = ''; // Find all clues containing this word var escaped_word = word.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); var re = new RegExp( '\\b' + escaped_word + '\\b', 'gi' ); $( clues ).each( function(i, text) { if ( re.test( text ) ) { list = list + ', ' + text; } }); // Trim leading comma if ( list.length > 0 ) { list = list.substring( 2, list.length + 1 ); } // Return list return ( list ); }

HTML:

Check Dupes
Safe Clues
Repeat Words
Dupe Clues

tom.. 5

不要使用g旗帜.

var re = new RegExp( '\\b' + escaped_word + '\\b', 'i' );

g标志使RegExp对象记住其位置,并在test()再次调用时从那里继续搜索.在您的情况下,每个调用应该从字符串的开头开始.

1 个回答
  • 不要使用g旗帜.

    var re = new RegExp( '\\b' + escaped_word + '\\b', 'i' );
    

    g标志使RegExp对象记住其位置,并在test()再次调用时从那里继续搜索.在您的情况下,每个调用应该从字符串的开头开始.

    2023-02-08 18:41 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有