正規表現チェック

最終更新日: 2020年10月27日
R8 | R9

実装イメージ

電話番号の項目に「数字の4桁-4桁-4桁」というルール(正規表現式)を指定した例を図1に示します。

電話番号の正規表現ルールに合致しなかった

入力文字に文字が含まれているため、エラーになっていることがわかります。

定義方法

モデル項目の詳細定義ダイアログで「入力チェック」タブをクリックして開きます。
「正規表現」欄に以下の式を入力します。

\d{1,4}?-?\d{1,4}?-?\d{1,4}

「d{1,4}」は、1つから4つまでの数字が入ることを意味します。
「-?」は、「-」があってもなくてもよいということを意味します。

正規表現式の指定

警告の設定

警告を表示しますが、ここで保存ボタンを押下すると登録自体は妨げないという設定を行う場合は、入力欄右側のリストボックスから「警告」を指定します。(空欄時は、エラーのときは登録できないようになります。)

警告の指定

仕様・制約

  • 利用できる正規表現の構文は、JavaおよびJavaScriptの両方で使える書式に限定されます。Designerで設定した式は、サーバ側のJavaと、クライアント(Webブラウザ)側のJavaScriptの両方に反映されるためです。
  • Javaで使える正規表現の詳細はjava.util.regex.Patternクラスのjavadocをお読みください。
  • JavaScriptで使える正規表現の詳細はMozillaのサイトが参考になります。
  • このチェックはリアルタイムで行われます。(ブラウザのJavaScriptでチェックします。) (※1)
  • 入力エラーの状態では「保存」などのボタンを押下することはできません。
  • エラーとなった入力項目は、背景が赤となります。テキストボックスまたは日付時刻リストボックスが対象です。
  • 正規表現式がブラウザのJavaScriptで解釈できない(動作しない)場合、保存ボタン押下後にサーバ側(Java)で処理されます。つまりフォームの値が送信されてからもチェック処理が適用されるという二重チェックとなっています。
  • 「文字数チェック」と併用する場合は、正規表現式を工夫してください。[詳細...]
  • 入力対象ではない項目に対する入力チェックを行うことはできません。具体的には計算式で求められる項目や、読み込み専用項目、参照連動項目です。
  • 一覧更新画面(親子モデルにおける、子モデル同時更新画面も含む)では、警告指定は動作しません。
  • カレンダを利用した日付型項目は、この項目に設定した日付フォーマットの正規表現をカレンダの入力チェックに利用します。詳細は "モデル項目 > 日付 > カレンダの利用" をお読みください。
※1…テキストエリアの場合はリアルタイムでのチェックは行われません。サーバ側でチェックされます。

利用できる構文

JavaとJavaScriptの両方で使える構文は次の通りです。

構文 説明
x 文字x
\ 次の文字をエスケープする
\\ バックスラッシュ文字
\xhh 16進値0xhhを持つ文字
\uhhhh 16進値0xhhhhを持つ文字
\t タブ文字 (\u0009)
\n 改行文字 (\u000A)
\r キャリッジ・リターン文字 (\u000D)
\f 用紙送り文字 (\u000C)
\cx xに対する制御文字
[abc] a、b、またはc (単純クラス)
[^abc] a、b、c以外の文字(否定)
[a-zA-Z] a-zまたはA-Z (範囲)
. 任意の文字(行末記号とマッチする場合もある)
\d 数字:[0-9]
\D 数字以外:[^0-9]
\s 空白文字:[\t\n\x0B\f\r]
\S 非空白文字:[^\s]
\v 垂直方向の空白文字:[\n\x0B\f\r\x85\u2028\u2029]
\w 単語構成文字:[a-zA-Z_0-9]
\W 非単語文字:[^\w]
^ 行の先頭
$ 行の末尾
\b 単語境界
\B 非単語境界
X? X、1または0回
X* X、0回以上
X+ X、1回以上
X{n} X、n回
X{n,} X、n回以上
X{n,m} X、n回以上、m回以下
X?? X、1または0回
X*? X、0回以上
X+? X、1回以上
X{n}? X、n回
X{n,}? X、n回以上
X{n,m}? X、n回以上、m回以下
XY Xの直後にY
X|Y XまたはY
(X) X、前方参照を行う正規表現グループ
(?:X) X、前方参照を行わない正規表現グループ
(?=X) X、幅ゼロの肯定先読み
(?!X) X、幅ゼロの否定先読み

よく使う正規表現

次の例は、よくある正規表現の利用例です。ご参考ください。
JavaとJavaScriptの両方で使えるものとなっています。

テーマ 書式
電話番号\d{1,4}?-\d{1,4}?-\d{1,4}
携帯電話番号090-\d{4}-\d{4}
郵便番号(※2)^\d{1,3}-\d{1,4}$
生年月日\d{4}-\d{2}-\d{2}
アルファベットを含まない文字列[^a-zA-Z]+
半角スペースを含まない文字列[^ ]+
全角および半角スペースを含まない文字列[^  ]+
数字を含まない文字列[^0-9]+
特定の文字のみを認める
(全角50音ひらがな、全角50音カタカナ、全角数字、半角数字、半角ハイフン)
[ぁ-んァ-ン0-90-9\-]+
空白以外のすべての文字を認める\S+
数字以外のすべての文字を認める\D+
[^0-9]+
アルファベットとアンダースコア以外のすべての文字を認める\W+
[^a-zA-Z0-9_]+
半角英小文字のみを認める[a-z]+
半角英小文字以外のみを認める(英大文字、数字、全角文字など含む)[^a-z]+
半角英大文字のみを認める[A-Z]+
半角英大文字以外のみを認める(英小文字、数字、全角文字など含む)[^A-Z]+
※2…郵便番号型の項目には、自動的に適用されます。ただし開発者が明示的に正規表現式を指定した場合は、その式を適用します。

全角文字のみ入力可能とする (日本)

Wagby の標準的な設定では「全角文字のみ入力可能」というルールは実現できません。
許容文字種の設定では全角漢字のチェック、または空白文字(スペース)が半角か全角かのチェックという指定になります。

そこで、次のように設定します。

  1. 入力フィルタを「文字列(最小限)」とします。
  2. 次の正規表現式を指定します。
    [^\x20-\x7e\uff61-\uff9f]*