2016-03-21 3 views
0

Grailsの電子メール検証ではsimple regexが適用されたようです。ほとんどの電子メールを検証していますが、エキゾチックではあるが許可されている文字があれば、検証に失敗します。 ßを許可することは些細なことが、ユーザーがしようとしたらどうだろう、検証のためのカスタム正規表現を使用してエキゾチックな文字のメール検証

package com.stuff.user.AppUser 

import grails.test.mixin.Mock 
import spock.lang.Specification 

/** 
* Created by hschoonjans on 21/03/2016. 
*/ 
@Mock(AppUser) 
class AppUserSpec extends Specification { 

    def "It doesn't validate an email with an eszett"() { 
     given: 
     AppUser user = new AppUser(email: "helainß@hotmail.com") 

     expect: 
     !user.validate(["email"]) 
    } 
} 

例えばドイツß文字がin some email addressesを使用しているが、聖杯の検証に合格しません彼のメールアドレスに別のエキゾチックで有効な文字を使用しますか?

この問題を回避するために、Java/Groovy/Grailsのユニバーサル電子メールアドレスバリデーターが存在することを知りたいと思います。現在のGrails電子メールの検証よりもスマートな任意の有効な電子メールアドレスを検証するクラス/正規表現。

答えて

1

私は自分のGrailsプロジェクトで前にこの数回遭遇していると私は、この正規表現を使用してかなり良い成功を収めてきました:

/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i 
+0

ねえ@Joshua!あなたはあなたの正規表現が何であるか、またはこの正規表現のソースに関する詳細情報を与えることができますか?私はそれが無効なURLと一致することができないことを確認し、それが受け入れる電子メールアドレスの範囲についてもっと知りたいと思います... – Heschoon

+0

それはRFC822(http://www.ietf.org/rfc /rfc0822.txt?number=822)、それは私が働く会社で過去18年間に有機的に成長しています。これは、国際的なクライアントのための拡張ASCII文字を扱おうとしており、有効な電子メールアドレスの苦情は何年も前にこれによって拒否されていませんでした。いくつかのサンプルデータを使ってテストし、結果が期待通りであることを確認することをお勧めします。 )部分全体を引っ張って説明すると、ほとんどがミニブックが必要になります; –

+0

ありがとう、たくさん、私はregexesから文字列を得るためにジェネレータをできるだけ早く見つけようとします、それは私に電子メールの種類のアイデアを与えるでしょうそれは処理することができます:) – Heschoon

関連する問題