$MATCH(文字列評価関数)
文字列に使用されている文字を評価し適合する部分までの文字数を返します。
形式
返却値=$MATCH(文字列,評価書式)
指定する値
-
返却値
評価書式に適合する部分までの文字数を設定する変数名を指定します。評価に適合する文字がない場合、0バイトの文字列を返します。
-
文字列
評価対象の文字列を定数または変数で指定します。定数を指定する場合は、「'(シングルクォーテーション)」で囲みます。
-
文字列を評価するための書式を定数で指定します。許可する文字を範囲で指定する場合は、[a-b]の形式で指定します。
評価書式には単純文字列のほかに、次に示す正規表現が使用できます。ただし、日本語文字コードの正規表現は指定できません。
-
.(ピリオド)
任意の1文字に適合します。
-
[ ](角括弧)
括弧に囲まれた文字の任意の1文字、または「-(ハイフン)」で区切られた文字範囲のうち任意の1文字に適合します。例えば、「R[OAI]M」は「ROM」、「RAM」、「RIM」に適合します。
また、「S[AE]+D」は「SAD」、「SED」、「SEED」、「SAAD」には適合しますが、「SAED」や「SEAD」には適合しません。
「C[0-9]」は「C0」、「C1」、「C2」などに適合します。
角括弧内の最初の文字として「^(アクサンシルコンフレックス)」を指定すると、意味が反対になり、「^」に続く文字以外のすべての文字に適合します。
-
[^]
「^」に続く文字以外、または「-」で区切られた範囲内の文字以外の、任意の1文字に適合します。
例えば、「x[^0-9]」は「xa」、「xb」、「xc」などには適合しますが、「x0」、「x1」、「x2」などには適合しません。
-
^
文字列の先頭に適合します。
-
$(ドル記号)
文字列の末尾に適合します。
-
*(アスタリスク)
直前にある文字または正規表現の0回以上の繰り返しに適合します。
例えば、「ba*c」は「bc」、「bac」、「baac」、「baaac」などに適合します。
-
+(加算記号)
直前にある文字または正規表現の1回以上の繰り返しに適合します。
例えば、「ba+c」は「bac」、「baac」、「baaac」などには適合しますが、「bc」には適合しません。
-
¥(円記号)
エスケープ文字指定で、後続の1文字に適合します。正規表現文字列の中で特殊な意味を持つ文字(*や$など)の意味を無効にします。ただし、tが続く場合には、特殊文字のタブ文字に適合します。
-
¥t
タブ文字に適合します。
-
終了状態
処理の終了状態とその内容を次に示します。
終了状態 |
内容 |
---|---|
NORMAL |
正常終了 |
NODATA |
評価に適合する文字がない |
ERROR |
− |
スクリプト中断 |
引数の誤り、またはそのほかのエラー |
記述例
- 例1
-
半角英数字以外をチェックする場合の記述例を次に示します。
[SET_VALUE] DATA = 'user$1' VAL = $MATCH(DATA,'[^a-zA-Z0-9]') [IF] VAL = '' [THEN] [SET_VALUE] MSG = 'MATCH OK' $ECHO(MSG) [ELSE] [SET_VALUE] MSG = 'MATCH NG (' +VAL+ ')' $ECHO(MSG) [IF_END]
- 実行結果
-
MATCH NG (4)
- 例2
-
日付形式をチェックする場合の記述例を次に示します。
[SET_VALUE] DATA = '2015/04/01' VAL = $MATCH(DATA,'^[1-2][0-9][0-9][0-9]/[0-1][0-9]/[0-3][0-9]$') [IF] VAL != '' [THEN] [SET_VALUE] MSG = 'MATCH OK' $ECHO(MSG) [ELSE] [SET_VALUE] MSG = 'MATCH NG' $ECHO(MSG) [IF_END]
- 実行結果
-
MATCH OK