@sourcejediが指摘しているように、太字/斜体は実際にはオプションではないようです。しかし、必要な他のすべてのものを正規表現で検索/置換する方法を見つけました。繰り返しますが、これは非常に頻繁に行わなければならない非常に特殊なタスクです (通常は非常に長い [多くの場合、アクセント付きのスペイン語で] google doc ファイルを html に変換する)、他の誰かが同じ /同様のボート、これが私が最終的に得たものです:
HTML:
<textarea id="input" cols="50" rows="10"></textarea><br>
<button onclick="format()">format!</button><br>
<textarea id="output" cols="50" rows="10"></textarea><br>
Javascript:
function format() {
var input = document.getElementById('input').value; // get input txt
var output = document.getElementById('output'); //target ouput txt box
var i = input;
var email = /(\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,6})/gim;
var url = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
var br = /(\r\n|\n|\r)/gm;
i = i.replace(br, '<br>'+'\n');
i = i.replace(url, '<a href="$1" target="blank">$1</a>');
i = i.replace(email, '<a href="mailto:$1">$1</a>' );
i = i.replace( /\u2018|\u2019|\u201A|\uFFFD/g, "'" );
i = i.replace( /\u201c|\u201d|\u201e/g, '"' );
i = i.replace( /\u02C6/g, '^' );
i = i.replace( /\u2039/g, '<' );
i = i.replace( /\u203A/g, '>' );
i = i.replace( /\u2013/g, '-' );
i = i.replace( /\u2013/g, '-' );
i = i.replace( /\u2022/g, '<span style="padding-left:15px;">&'+'#8226;</span>' );
i = i.replace( /\u00C9/g, '&'+'Eacute;' ); // E w/accent
i = i.replace( /\u00CD/g, '&'+'Iacute;' ); // I w/accent
i = i.replace( /\u00D3/g, '&'+'Oacute;' ); // O w/accent
i = i.replace( /\u00DA/g, '&'+'Uacute;' ); // U w/accent
i = i.replace( /\u00DD/g, '&'+'Yacute;' ); // Y w/accent
i = i.replace( /\u00D1/g, '&'+'Ntilde;' ); // Nye
i = i.replace( /\u00E1/g, '&'+'aacute;' ); // a w/accent
i = i.replace( /\u00E9/g, '&'+'eacute;' ); // e w/accent
i = i.replace( /\u00ED/g, '&'+'iacute;' ); // i w/accent
i = i.replace( /\u00F3/g, '&'+'oacute;' ); // o w/accent
i = i.replace( /\u00FA/g, '&'+'uacute;' ); // u w/accent
i = i.replace( /\u00FD/g, '&'+'yacute;' ); // y w/accent
i = i.replace( /\u00F1/g, '&'+'ntilde;' ); // nye
i = i.replace( /\u2014/g, '&'+'#8212;' ); // mdash
i = i.replace( /\u2026/g, '...' ); // elipses
i = i.replace( /\u00A9/g, '&'+'#169;' ); // copyright logo
i = i.replace( /\u00AE/g, '&'+'#174;' ); // restricted logo
i = i.replace( /\u2122/g, '&'+'#8482;' ); // trade mark logo
i = i.replace( /\u00BC/g, '&'+'#188;' ); // 1/4
i = i.replace( /\u00BD/g, '&'+'#189;' ); // 1/2
i = i.replace( /\u00BE/g, '&'+'#190;' ); // 3/4
i = i.replace(/[\u02DC|\u00A0]/g, " "); // speacial spaces characters
output.innerHTML = i;
}
...そして本当に興味のある方のために、調整可能なパラメーターを備えたバージョンがあります (メールのプリロード、カスタム CSS によるラッパー div の追加、target=blank トグル、mailto トグル、縮小など)
http://jsfiddle.net/N4vrE/