正規表現について
正規表現について質問が有ります。
プログラミング初心者なので、根本的な間違い等も犯している可能性もありますがご了承下さい。
今、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としてもエラーが返って来てしまいます。
原因を教えていただけますか?
また、もとからあった正規表現が何をどういう指定しているのかもキチンとは理解していないので、教えていただけるとうれしいです。
よろしくお願いします。
補足
補足させていただきます。質問が不明確で申し訳ありません。質問内容は前者のほうになります。具体的な内容としますと、正規表現を含んだ入力を許可すると、それを再表示した場合にスクリプトエラーが発生してしまうという現象がおこってしまいます。それを回避したいと考えています。