こんにちは。
先日、ロングテキストエリアに複数のメールアドレスの入力のみを可能にする実装をしました。
その際に少し苦戦をしてしまったので、備忘録として記事を登録します。
■やりたいこと①ロングテキストエリアにはメールアドレスのみを入力可能にしたい
②メールアドレスは複数入力する想定
③1つのメールアドレスごとに改行する
■今回作成した入力規則の数式NOT(REGEX( 設定対象項目(ロングテキストエリア)のAPI参照名 ,"(([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4})?(\\r|\\n)?)*"))
■簡単な解説①REGEX関数とは
正規表現による入力値チェックを行う関数です。
正規表現とは文字列の集合を1つの文字列で表現するものらしいです。(むずかしい・・)
REGEX関数を使えば、英数字しか入力させたくない!など、特定の項目に入力文字や文字数の制限をつけることができるので、入力フォーマットの統一をはかることができます。
例:REGEX(入力規則をかけたい項目のAPI参照名,"[0-9]{10}")
上の数式は、項目の値が半角数字0から9を使用した10桁の値かどうか判断します。
②今回の数式について1)まず、1つのメールアドレス形式の入力規則については
こちらのヘルプを参照しました。
下の数式はヘルプに書いてある数式のコピーです。
REGEX({!Email_Address},“[a-zA-Z0-9._%+]+@[a-zA-Z0-9.]+.[a-zA-Z]{2,4}“)
【数式の一部解説】
・[a-zA-Z0-9._+-]について:正規表現では複数の対象を示す場合に[]で囲みます。
半角英数字の小文字と大文字
a-zからA-Zまで 、数字は0-9まで、記号の
._+-を表現しています。[]のすぐ後ろにある+は、それらの文字の1回以上の繰り返しを表しています。・{2,4}について:文字数が指定されている場合、指定したい文字数を{}で囲みます。△文字以上、〇文字以下としたい場合、今回のように{△,〇}と表現します。2)複数行にわたる入力規則を実現する方法についてはこちらのヘルプを参照しました。下の数式はヘルプに書いてある数式のコピーです。 NOT(REGEX( <お客様の項目名>,"(([0-9]{7})?(\\r|\\n)?)*")) |
【数式の一部解説】
・(\\r|\\n):改行を表します。
・*や?について:同じ文字の繰り返しを表します。少しだけ意味が変わってくるのでよかったら調べてみてください^^
■終わりに正規表現に関して、「もっといい方法あるよー!」などあれば、教えていただけると嬉しいです!
{{i18n("articles.view.premium")}}