我正在爲我的node.js irc bot做一個客戶端,並希望實現選項卡完成,但以下代碼中的正則表達式無理由返回null。我已經在console.log語句旁包含了記錄爲註釋的內容。正則表達式匹配返回null無故
什麼是標籤填寫:我鍵入「麥克風」,然後按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);
我看到你已經使用'console.log'來幫助你調試,這很好,但有時候它會隱藏空白。嘗試添加分隔符,引號或第二個參數,例如'console.log('user:''+ user +'「',user ==='michael');',你可能會發現你需要修剪一個字段。 –
對象和文字正則表達式都適用於我。還有其他一些事情正在發生。 – kikuchiyo
@paul nope。它仍然是「邁克爾」。 –