正規表現について
正規表現について質問が有ります。
プログラミング初心者なので、根本的な間違い等も犯している可能性もありますがご了承下さい。
今、javascriptを使ってフォームに入力されたメールアドレスの入力チェックを行おうとしています。
とりあえずはwebを漁って見つけたソースでチェックできる様にはなったのですが、もうちょっと拡張したいと思った所、つまずいてしまいました。
元のソースは
if (!this.value.match(/^[\x01-\x7F]+@((([-a-z0-9]+\.)*[a-z]+)|(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))$/){
alert("error");
}
という風にチェックをしており、
******(@マークが無い)
***@(@の後半が無い)
@***(@の前半が無い)
などの基本的な形式に対してはチェックを行う様になっています。
しかし、hoge@hogeの様に書くと、適当に書いたドメインでもスルーしてしまいます。
そこで、ドメインのチェックも行おうとしているのですが、ここで詰まっています。
ちなみに今回は携帯のアドレスに限定してチェックを行おうと思っています。
javascriptでの正規表現について書いてあるページを見ながら下の様に書いたのですが上手く動作してくれません。
正規表現の書き方がおかしいのだろうとは思うのですが、どこがいけないのかよく分かりません。
if (!this.value.match(/^[\x01-\x7F]+@((([-a-z0-9]+\.)*[a-z]+)|(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}))$/) ||
/*ここから下を追加*/
(!this.value.match(/@(docomo|ezweb|softbank)\.ne\.jp$/) || !this.value.match(/@i\.softbank\.jp$/)){
alert("error");
}
最初はもとからある基本的な入力形式のチェックを行い、また@後のドメインが携帯のドメインでない場合にエラーを返す。というつもりで書きました。
ですが、***@docomo.ne.jpとしてもエラーが返って来てしまいます。
原因を教えていただけますか?
また、もとからあった正規表現が何をどういう指定しているのかもキチンとは理解していないので、教えていただけるとうれしいです。
よろしくお願いします。
お礼
YAMAMAYA様、回答ありがとうございます。 m//の区切り文字は、##や{}や<>や()に変えられるということですね。 初めて知りました。 スラッシュが含まれる正規表現を書く場合は、たしかに分かりやすいですね。