[JavaScript] Unicode文字かどうかを判定する正規表現

2022.11.01

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

小ネタです。JavaScriptで文字、数字、空白いずれかのUnicode文字かどうかを判定する正規表現をどう実装するのか調べました。

\p{L} が文字、\p{Z}が空白、\p{N}が数字です。最後のスラッシュの後に uフラグ が必要でした。他の言語で同様の処理を実装した時は uフラグ といったものはなかったのでハマりかけました。

const regexp = /^([\p{L}\p{Z}\p{N}]*)$/u;
console.log(regexp.test("a")); // true
console.log(regexp.test("1")); // true
console.log(regexp.test("あ")); // true
console.log(regexp.test(" ")); // true
console.log(regexp.test(" ")); // true
console.log(regexp.test("ー")); // true
console.log(regexp.test("~")); // false

短いですが以上になります。