目次
データ入力時に、半角カタカナを使用してほしくない場面はよくあります。
Salesforceでは、入力時に使える文字を細かく制御したい場面があります。
たとえば、以下のようなケースです。
- 顧客名や商品名に半角カタカナを使わせたくない
- 許可する記号を限定してデータを統一したい
- 外部システム連携で文字種を厳密に制御する必要がある
今回は、「登録名(RegistrationName__c)」 というカスタム項目を例に、
次の条件で入力を制御する入力規則を作成します。
要件
- 半角カタカナはすべて禁止
- 記号は「.(ピリオド)」と「-(ハイフン)」のみ許可
- 項目が空欄の場合はエラーにしない(任意入力)
文字種を整理する
まずは、それぞれの文字種を正規表現でどう表現するか整理します。
文字種 | 正規表現 | 説明 |
---|---|---|
半角カタカナ | ヲ-゚ | アイウエオ…濁点・半濁点も含む |
ピリオド | \. | 記号「.」を指定 |
ハイフン | - | 記号「-」を指定 |
ポイント
半角カタカナは[ヲ-゚]
でまとめて指定できます。
記号は「ピリオド」と「ハイフン」だけを個別に指定します。
完成形の入力規則
以下が完成形の入力規則です。
IF(
ISBLANK(RegistrationName__c),
FALSE,
OR(
REGEX(RegistrationName__c, ".*[ヲ-゚].*"),
NOT(REGEX(RegistrationName__c, "^[a-zA-Z0-9.-]+$"))
)
)
式の意味を分解して解説
この数式は、大きく3つのパートで構成されています。
1. 空欄はエラーにしない
ISBLANK(RegistrationName__c)
- 項目が空欄なら、入力規則を適用しません。
- 任意入力項目にするための設定です。
2. 半角カタカナの使用を禁止
REGEX(RegistrationName__c, ".*[ヲ-゚].*")
- 入力内容に半角カタカナが1文字でも含まれていれば
TRUE
を返します。 - これにより、半角カタカナが含まれていればエラーとなります。
3. 許可されていない記号が含まれていないかチェック
NOT(REGEX(RegistrationName__c, "^[a-zA-Z0-9.-]+$"))
この部分は「入力された文字が許可リスト以外を含んでいないか」をチェックします。
a-zA-Z0-9
→ 英数字のみ許可.
と-
→ ピリオドとハイフンを許可+
→ 1文字以上の繰り返し^
と$
→ 入力全体がこの範囲で構成されているかを確認
結果的に、英数字、ピリオド、ハイフン以外の文字が1つでもあればエラーとなります。
4. OR条件でまとめる
OR( 条件A, 条件B )
- 半角カタカナが含まれている場合、または許可されていない文字が含まれている場合にエラーを返します。
- これにより、**「半角カタカナ禁止」+「特定記号のみ許可」**を同時に実現できます。
処理の流れ
最終的な処理は以下の順番で行われます。
- 項目が空欄かを確認
→ 空欄ならエラーにしない - 半角カタカナが含まれていないかを確認
→ 含まれていればエラー - 許可していない記号や文字が含まれていないか確認
→ 含まれていればエラー - いずれかに該当した場合はエラー表示
サンプル入力と結果
入力値 | 判定 | 理由 |
---|---|---|
TANAKA | OK | 英字のみ |
tanaka-01 | OK | 英数字とハイフン |
tanaka.01 | OK | 英数字とピリオド |
タナカ | NG | 半角カタカナ含む |
tanaka_01 | NG | アンダースコア _ は未許可 |
田中 | NG | 漢字は許可範囲外 |
まとめ
今回の数式で実現したことは以下の通りです。
- 半角カタカナを完全禁止
- 記号はピリオドとハイフンのみ許可
- 項目が空欄ならエラーにしない
実際の現場では、これを応用して以下のような制御も可能です。
- 許可する記号を追加(例:
_
を許可する) - 日本語や全角文字を禁止する
- 特定の文字列パターンに完全一致させる
正規表現を使えば、Salesforce上で入力内容を柔軟にコントロールでき、
データ品質を保ちながらシステム連携をスムーズに行うことができます。