簡體   English   中英

正則表達式匹配無故返回null

[英]Regex match returns null for no reason

我正在為我的node.js irc bot制作客戶端,並想實現tab完整,但以下代碼中的正則表達式無緣無故地返回null。 我在console.log語句旁邊添加了記錄為注釋的內容。

選項卡完成了什么:我鍵入“ mic”並按tab,它會自動將其完成為“ michael”,因為他是頻道中的用戶。

tabStart = false;
$("#textbox").keydown(function (e) {
    if (!$(this).val().length) return;
    if (e.keyCode === 9) {
        e.preventDefault();
        var text = $(this).val();
        console.log('text: ' + text);// mic
        var index = text.lastIndexOf(" ");
        console.log('index: ' + index);// -1
        if (!tabStart) {
            tabStart = index > -1 ? text.substr(index + 1) : text;
            var current = '';
        } else {
            var current = index > -1 ? text.substr(index + 1) : text;
        }
        console.log('tabStart: ' + tabStart);// mic
        console.log('current: ' + current);// 
        var active = $("#tabs").tabs("option", "active");
        var channel = $("#tabs ul>li a").eq(active).attr("href");
        console.log('channel: ' + channel);// #debug
        var users = $(channel + " .user-list li");
        var regex = new RegExp("^" + tabStart + ".*", "i");
        console.log('regex: ' + regex);// /^mic.*/i
        for (var i = 0; i < users.length; ++i) {
            var user = $(users[i]).text();
            console.log('user: ' + user);// michael
            var match = user.match(regex);
            console.log('match: ' + match);// null
            if (match) {
                var newText = (index > -1 ? text.substr(0, index + 1) : "") + user;
                console.log('newText: ' + newText);
                $(this).val(newText);
                break;
            }
        }
    } else {
        tabStart = false;
    }
});

如我所說,我似乎找不到對此的解釋,因為我在javascript控制台中嘗試了以下操作,並且可以正常工作

var regex = new RegExp("^mic.*", "i");"michael".match(regex);

您似乎無法從users那里獲得正確的文本。 由於我不知道您的實際HTML,因此我創建了一個CodePen並注釋掉了一些通道行,並將users添加為典型數組。 這樣做,您的regex可以正常工作。

這是正在使用的codePen

找出問題所在。 user被包裹在&#8203;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM