2015-07-05 3 views
0

Я сопоставил все символы, которые не являются вкладками в регулярном выражении.
/[^\t]/gСопоставьте условие в первой строке

Я также хотел бы сделать то же самое, но только для первой строки. Это позволит мне окрашивать символы без табуляции в первой строке как один цвет (строка заголовка), а оставшаяся с другой.

Я могу сопоставить всю первую строку, но не могу сопоставить первые строки без вкладок. Может ли кто-нибудь помочь? Это возможно.

/^(?!\n)(.*)/g

http://jsfiddle.net/viciouskinid/w0o8sa7w/

<div id='Highlighter'></div><div id='Highlighter1'></div> 
<textarea id='Status'>asdfafd afsdd fadsfasd 
asdfafd afsdd fadsfasdasdfafd afsdd fadsfasd 
asdfafd afsdd fadsfasd 
asdfafd afsdd fadsfasd 
asdfafd afsdd fadsfasd 
asdfafd afsdd fadsfasd 
asdfafd afsdd fadsfasd</textarea> 




var highlighter = $('#Highlighter'),highlighter1 = $('#Highlighter1'), 
status = $('#Status'), 
re = /[^\t]/g, 
re1 = /^(?!\n)(.*)/g;//; 




var keyupinput = function (highlighter,status,re) { 
var content = status.val(), 
    match, 
    start = 0, 
    output = ''; 

while (match = re.exec(content)) { 
    output += content.substring(start, match.index) + '<b>' + content.substring(match.index, match.index + match[0].length) + '</b>'; 
    start = match.index + match[0].length; 
} 
output += content.substring(start, content.length); 
highlighter.html(output); 
} 

status.on('keyup input', keyupinput(highlighter,status,re1)); 
status.on('keyup input', keyupinput(highlighter1,status,re)); 

ответ

1

Вы не можете сделать это с помощью яваскрипта регулярных выражений в одном кадре. Поэтому лучшим компромиссом является извлечение первой линии и ее замена:

var result = str.replace(/^.*/, function (m) { 
    return m.replace(/[^\t\r]+/g, '<b>$&</b>'); }); 
Смежные вопросы