我匹配了正则表达式中没有标签的所有字符
/[^\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));
答案 0 :(得分:1)
你不能一次性使用javascript正则表达式。因此,最好的妥协是提取第一行并在其中进行替换:
var result = str.replace(/^.*/, function (m) {
return m.replace(/[^\t\r]+/g, '<b>$&</b>'); });