JavaScriptでシンタックスハイライトを作成・使用する方法をわかりやすく解説
JavaScriptでシンタックスハイライト(構文強調表示)を作成して使用するには、正規表現とDOM操作を組み合わせるのが一般的です。ここでは、ページ内のリンク(アンカータグ)を自動的に検出し、スタイルを適用して強調表示するサンプルコードを紹介します。
サンプルコード
<!DOCTYPE html>
<html>
<head>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.colorLinks {
color: rgb(131, 44, 212);
text-decoration: none;
font-size: 20px;
font-weight: bold;
}
.setColor {
margin: 20px;
padding: 10px;
border: none;
font-size: 18px;
background-color: rgb(226, 43, 89);
color: white;
}
</style>
</head>
<body>
<h1>Syntax Highlighting example</h1>
<div class="CodeDiv">
<a href="https://www.google.com">Go to google.com</a>
<a href="https://www.facebook.com">Go to facebook.com</a>
</div>
<button class="setColor" onclick="highlightLinks()">Click Here</button>
<h2>Click the above button to highlight the links</h2>
<script>
var anchrorRg = /[^<]*(<a href="([^"]+)">([^<]+)<\/a>)/g;
function highlightLinks() {
var text = document.querySelector(".CodeDiv").innerHTML;
text = text.replace(anchrorRg, function() {
function check(arguments) {
let tempArr = [];
tempArr.push(Array.prototype.slice.call(arguments, 2, 4));
return `<a class="colorLinks" href=${tempArr[0][0]}>${tempArr[0][1]}</a><br>`;
}
return check(arguments);
});
document.querySelector(".CodeDiv").innerHTML = text;
}
</script>
</body>
</html>
実行結果
上記のコードを実行すると、ウィンドウサイズが700pxより大きい場合、次のように表示されます。

続いて、「Click Here」ボタンをクリックすると、リンクがハイライト表示されます。

コードのポイント
このサンプルの動作の仕組みは以下のとおりです。
まず、正規表現を使ってHTML内のアンカータグ(<a>タグ)とそのhref属性・リンクテキストを抽出します。次に、replace()メソッドのコールバック関数内で、抽出したURLとテキストをもとに新しいリンクを生成し、強調表示用のクラス「colorLinks」を付与します。
ボタンがクリックされるとhighlightLinks()関数が呼び出され、.CodeDiv要素のinnerHTMLが書き換えられることで、リンクが紫色の太字(font-size: 20px)で強調表示され、各リンクの末尾には改行(<br>)が挿入されます。
このように、正規表現による文字列の置換とCSSクラスの付与を組み合わせることで、シンプルなシンタックスハイライト機能をJavaScriptだけで実現できます。
-
HTMLとJavaScriptで作る重量コンバーター:kgをgに変換する方法
HTMLとJavaScriptを組み合わせれば、ブラウザ上で動作するシンプルな重量コンバーター(単位変換ツール)を簡単に作成できます。この記事では、キログラム(kg)を入力するとグラム(g)に自動変換して表示するウェイトコンバーターの実装方法を、サンプルコードとともにわかりやすく解説します。 実装コード例 以下のコードをそのままHTMLファイルとして保存し、ブラウザで開くだけで動作します。 <!DOCTYPE html> <html> <head> <style> body{  
-
CSSとJavaScriptでアコーディオン(開閉パネル)を作成する方法をわかりやすく解説
CSSとJavaScriptを組み合わせることで、クリックすると内容が開閉する「アコーディオン(折りたたみパネル)」を簡単に実装できます。本記事では、実際に動作するサンプルコードをもとに、その作成手順と仕組みを詳しく解説します。 アコーディオンの実装例 以下は、HTML・CSS・JavaScriptを使ってアコーディオンを実装した完全なサンプルコードです。 <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, ini