3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援→開発戻り浦島太郎状態の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。

(JavaScript)match関数を使った正規表現チェックでハマッた

JavaScriptで以下のようにmatch関数を使っていたんですが、一致する値をフォームに入力しても値がnullになります。

//要素選択は、jQueryを使用

alert( $("#tel").val().match('/^[0-9-]{6,9}$|^[0-9-]{12}$/') );

で、よくよく match() の使い方を見たら、パターン文字列はクォーテーションで囲む必要がないんですね。

なので、正しくは下記のとおりになるようです。

//要素選択は、jQueryを使用

alert( $("#tel").val().match(/^[0-9-]{6,9}$|^[0-9-]{12}$/) );

パターン文字列を変数に入れたい時もクォーテーションで囲む必要がありません。

var ptn = /^[0-9-]{6,9}$|^[0-9-]{12}$/;

//要素選択は、jQueryを使用

alert( $("#tel").val().match( ptn ) );

match関数は、マッチすればその値を配列で、マッチしなければnullを返すようです。

参考:

JavaScript - String - match()

正規表現(RegExp)

matchの戻り値って - プログラマ的京都生活