モダンJavaScript入門: 正規表現とその応用方法

正規表現は、テキスト内の特定の文字列を検索したり、置換したりするために使用されます。JavaScript正規表現を扱う方法を学びましょう。

目次

  1. 正規表現とは
  2. 正規表現の作成方法
  3. 正規表現の主なメソッド
  4. 正規表現の応用例

1. 正規表現とは

正規表現(RegEx)は、文字列の検索や置換に使用される強力なパターンマッチングの機能です。特定のパターンに一致する文字列を見つけるため、検索、検証、置換などの操作を簡単に行うことができます。


2. 正規表現の作成方法

JavaScript正規表現を作成するには2つの方法があります。

  1. リテラル構文: /pattern/flags
  2. RegExpオブジェクトのコンストラクタ: new RegExp(pattern, flags)
// リテラル構文
let regex1 = /abc/;

// RegExpオブジェクトのコンストラクタ
let regex2 = new RegExp('abc');

3. 正規表現の主なメソッド

JavaScript正規表現には、以下のような主なメソッドがあります。

  • test(): 正規表現がテスト対象の文字列と一致するかどうかをテストします。
  • exec(): マッチする部分を見つけ、その情報を持つ配列を返します。
let regex = /abc/;
let str = 'abcdef';

// test()
console.log(regex.test(str)); // true

// exec()
console.log(regex.exec(str)); // ["abc", index: 0, input: "abcdef", groups: undefined]

4. 正規表現の応用例

正規表現は非常に強力で、多くの場面で使用されます。ここでは、いくつかの応用例を紹介します。

4.1. メールアドレスの検証

let emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
let email = 'test@example.com';

console.log(emailRegex.test(email)); // true

4.2. パスワードの検証

let passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/;
let password = 'Test1234';

console.log(passwordRegex.test(password)); // true

4.3. URLの検証

let urlRegex = /^(https?:\/\/)?([^\s\.]+\.\S{2}|localhost[\:?\d]*)\S*$/;
let url = 'http://example.com';

console.log(urlRegex.test(url)); // true

4.4. 電話番号の検証

let phoneRegex = /^\d{10,11}$/;
let phone = '01012345678';

console.log(phoneRegex.test(phone)); // true

4.5. 日付の検証

let dateRegex = /^\d{4}-\d{2}-\d{2}$/;
let date = '2023-12-13';

console.log(dateRegex.test(date)); // true

4.6. HTMLタグの検出

let htmlTagRegex = /<\/?[\w\s]*>|<.+[\W]>/;
let htmlString = '<h1>Title</h1>';

console.log(htmlTagRegex.test(htmlString)); // true

4.7. 特定単語数える

let wordCountRegex = /apple/g;
let text = 'apple apple orange apple banana';

console.log(text.match(wordCountRegex).length); // 3

4.8. 特殊文字除去

let specialCharRegex = /[^\w\s]/g;
let text = 'Hello, World!';

console.log(text.replace(specialCharRegex, '')); // 'Hello World'

4.9. 空白除去

let whiteSpaceRegex = /\s/g;
let text = 'Hello, World!';

console.log(text.replace(whiteSpaceRegex, '')); // 'Hello,World!'

4.10. 大文字・小文字切り替え

let string = 'Hello, World!';
let upperCaseRegex = /[a-z]/g;
let lowerCaseRegex = /[A-Z]/g;

console.log(string.replace(upperCaseRegex, (match) => match.toUpperCase())); // 'HELLO, WORLD!'
console.log(string.replace(lowerCaseRegex, (match) => match.toLowerCase())); // 'hello, world!'

これらの例からもわかるように、正規表現は非常に強力なツールであり、JavaScriptの中でも重要な機能の一つです。