読者です 読者をやめる 読者になる 読者になる

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

RGB

javascript

233,123,33のような文字を見つけたら、対応する色を表示する。
/(?:(?:[1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])(?:(?!\d)|,)){3}/が、カンマで区切られた0〜255の数字三つにマッチする正規表現

document.normalize();
var span = document.createElement('span'),
    xp = document.evaluate('//text()', document.body, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
span.appendChild(document.createTextNode('■'));
for (var i = 0; i < xp.snapshotLength; ++i) {
  var node = xp.snapshotItem(i),
      df = document.createDocumentFragment(),
      m,
      text = node.nodeValue;
  while (m = /(?:(?:[1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])(?:(?!\d)|,)){3}/.exec(text)) {
    df.appendChild(document.createTextNode(RegExp.leftContext));
    df.appendChild(span.cloneNode(true)).style.color = 'rgb(' + m[0] + ')';
    df.appendChild(document.createTextNode('(' + m[0] + ')'));
    text = RegExp.rightContext;
  }
  if (text == node.nodeValue) continue;
  df.appendChild(document.createTextNode(text));
  node.parentNode.replaceChild(df, node);
}