作りたいもの
以下のようなエラーチェックを行う入力フォーム
OKな例
・山田太郎
・山田 太郎(間に半角スペース1個)
・山田 太郎(間に全角スペース1個)
・山田 太郎(間に全角スペース2個)
・山田 アンデルセン 太郎(間に全角スペース1個ずつ)
エラーを吐きたい例
・「 」←半角スペース1個のみ
・「 」←全角スペース1個のみ
・「 」←半角スペース2個連続
・「 」←全角スペース2個連続
名前の間に入るスペースは通すけど、スペースだけの入力は許容しない、といった感じ。
使ったもの
Javascript, 正規表現
実装
let str = '山田 太郎';
let pattern = /^\u3000*$/g;// 1文字以上の全角スペース
if(str.match(pattern) != null){
// OK
} else {
// NG:スペースのみの入力
}
| 正規表現 | 意味 |
|---|---|
| /^\u3000*$/g | 1文字以上の全角スペース |
| * | 直前の文字の0文字以上の繰返し |
| ^ | 文字列の先頭 |
| $ | 文字列の末尾 |
| /^正規表現$/ | 任意の正規表現に完全一致する文字列 |
| /正規表現/g | 全ての文字についてマッチするかどうかを検査 |
半角スペースの場合は/^\x20+$/gで同じことができる。 |
\u3000ではなく「 」で全角スペースを直書きしても良いが、Lintエラーに引っかかることがあるのでこっちのほうがよい。
参考