匹配第一行的条件

时间:2015-07-05 00:39:43

标签: javascript regex

我匹配了正则表达式中没有标签的所有字符 /[^\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 个答案:

答案 0 :(得分:1)

你不能一次性使用javascript正则表达式。因此,最好的妥协是提取第一行并在其中进行替换:

var result = str.replace(/^.*/, function (m) { 
    return m.replace(/[^\t\r]+/g, '<b>$&</b>'); });