내 node.js irc bot에 대한 클라이언트를 만들고 있으며 탭을 구현하려고하지만 다음 코드의 정규식은 아무 이유없이 null을 반환합니다. 나는 console.log 문 옆에 코멘트로 기록 된 것을 포함시켰다.정규식 일치는 아무 이유없이 null을 반환합니다.
탭 완성 : "마이크"를 입력하고 탭을 누르면 채널의 사용자이기 때문에 자동으로 "마이클"로 완성됩니다.
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;
}
});
나는 내가 자바 스크립트 콘솔에서 다음을 시도하기 때문에 나는이에 대한 설명을 찾을 수 없습니다, 말했듯이 당신은 점점 문제가있는 것처럼 그것은 보인다
var regex = new RegExp("^mic.*", "i");"michael".match(regex);
디버깅에 도움이되는'console.log'를 사용했음을 알았습니다. 그러나 그것은 때로는 공백을 숨 깁니다. 구분 기호, 따옴표 또는 두 번째 인수를 추가하십시오. 'console.log ('user :' '+ user +' '', user === 'michael');'필드를 다듬어야한다는 것을 알 수 있습니다. –
개체와 리터럴 정규 표현식 모두 나를 사용할 수 있습니다. 다른 일이 계속되어야합니다. – kikuchiyo
@paul nope. 그것은 여전히 "마이클"입니다. –