🔍

空白検知(ゼロ幅スペースなどに対応した完全版) in JS/PHP

2022/01/16に公開

この記事はQiitaに投稿していたものです。最終更新:2021年07月15日


この記事のコードはCC0で自由に利用できます

空白や改行だけの文字列の検知には正規表現の\Sで検知したり、String.prototype.trim()(MDN)を使用することがありますが、これだとゼロ幅スペース(Wikipedia)などの一部の空白文字は通過してしまいます。そこで、より多くの文字を検知するコードを書いたので紹介します。

JavaScriptの場合

const word = "判別する文字列";
const reg = /^[\u0009-\u000d\u001c-\u0020\u11a3-\u11a7\u1680\u180e\u2000-\u200f\u202f\u205f\u2060\u3000\u3164\ufeff\u034f\u2028\u2029\u202a-\u202e\u2061-\u2063\ufeff]*$/;
if (reg.test(word)) {
    console.log("空白のみです!");
} else {
    console.log("空白以外の文字が含まれています");
}

PHPの場合

$word = "判別する文字列";
$reg = preg_match('/^[\x{0009}-\x{000d}\x{001c}-\x{0020}\x{11a3}-\x{11a7}\x{1680}\x{180e}\x{2000}-\x{200f}\x{202f}\x{205f}\x{2060}\x{3000}\x{3164}\x{feff}\x{034f}\x{2028}\x{2029}\x{202a}-\x{202e}\x{2061}-\x{2063}\x{feff}]*$/u', $word);
if ($reg == 1) {
    echo "空白のみです!";
} else {
    echo "空白以外の文字が含まれています";
}

参考記事など

Discussion