正規表現について
正規表現について質問が有ります。
プログラミング初心者なので、根本的な間違い等も犯している可能性もありますがご了承下さい。
今、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としてもエラーが返って来てしまいます。
原因を教えていただけますか?
また、もとからあった正規表現が何をどういう指定しているのかもキチンとは理解していないので、教えていただけるとうれしいです。
よろしくお願いします。
補足
ご回答ありがとうございます。 私の説明不足で申し訳いのですが、 ファイル名のチェックのみでなく、 #ref( ) 改行 といった部分もチェックしたいのです。 本来は自分で考えるべきなのですが、時間と能力が足りませんので、 ご協力お願いいたします。