1

One of our clients validates email addresses in their own software prior to firing it via an API call to our system. The issue is however that their validation rules do not match those our system, therefore they are parsing and accepting addresses which break our rules. This is causing lots of failed calls.

They are parsing stuff like "dave@-whatever.com", this goes against RFC 952/RFC 1123 rules as it begins with a hyphen. They have asked that we provide them with our regex list so they can update validation on their platform to match ours.

So, I need to find/build an RFC 952/RFC 1123 accepted. I found this in another SO thread (i'm a lurker :)), would it be suitable and prevent these illegal domains from being sent?

"^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$";
4

1 に答える 1

6

ドメイン部分の最大長は 255 文字で、数字、ASCII 文字、およびハイフンのみで構成できます。ハイフンを最初にすることはできません。

大文字と小文字を区別せず、長さに関係なく、この正規表現を使用して、1 つのドメイン コンポーネントの有効性を確認できます。

[a-z0-9]+(-[a-z0-9]+)*

これもまたnormal* (special normal*)*パターンnormalであり[a-z0-9]、特別な存在-です。

次に、これらすべてを別のnormal* (special normal*)*パターンでnormal部分として取り、特別な存在として.、最初と最後に固定します。

^[a-z0-9]+(-[a-z0-9]+)*(\.[a-z0-9]+(-[a-z0-9]+)*)+$

大文字と小文字を区別しないマッチングができない場合はA-Z、文字クラスに追加してください。

ただし、最大長の 255 はチェックしないことに注意してください。正の先読みを使用して行うこともできますが、正規表現は非常に複雑になり、文字列長関数を使用する方が短くなります ;)

于 2012-01-13T10:35:17.990 に答える