Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式匹配无理由返回null_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 正则表达式匹配无理由返回null

Javascript 正则表达式匹配无理由返回null,javascript,jquery,regex,Javascript,Jquery,Regex,我正在为node.js irc bot创建一个客户端,并希望实现tab complete,但下面代码中的正则表达式毫无理由返回null。我在console.log语句旁边添加了作为注释记录的内容 tab完成:我键入“mic”并按tab键,它会自动将其完成为“michael”,因为他是该频道的用户 tabStart = false; $("#textbox").keydown(function (e) { if (!$(this).val().length) return; if

我正在为node.js irc bot创建一个客户端,并希望实现tab complete,但下面代码中的正则表达式毫无理由返回null。我在console.log语句旁边添加了作为注释记录的内容

tab完成:我键入“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;
    }
});

似乎您在从
用户
获取正确文本时遇到问题。由于我不知道您的实际HTML,我创建了一个代码笔,注释掉了一些频道行,并添加了
用户
,作为一个典型的数组。这样做,您的
regex
工作正常


这是你的电话号码

解决了这个问题<代码>用户被包装在
和#8203中

我看到您使用了
console.log
来帮助调试,这很好,但有时它会隐藏空白。尝试添加分隔符、引号或第二个参数,例如
console.log('user:“+user+”,user=='michael'),您可能会发现需要修剪字段。对象和文本正则表达式对我都适用。“一定有别的事发生了。”保罗:没有。它仍然是“迈克尔”。你能为我们建立一个代码笔吗?事实上,问题在于用户
user==“michael”
返回false,但我检查了它,它是一个
字符串
,当我
console.log('user:“+user+”)
时,它是
用户:“michael”
var regex = new RegExp("^mic.*", "i");"michael".match(regex);