-1

私は正規表現にあまり慣れていませんが、自分で正規表現を書くよりも、正規表現を読んで理解する方がはるかに優れていると思いました。これを機能させることができません。

メールのパスワード

基本的に、電子メールアドレスと任意の長さのパスワードを、周囲にスペースがある場合とない場合のコロンで区切って確認する必要があります。

パスワードには、コロンを含め、絶対に任意の文字を含めることができます。電子メールにコロンを含めることはできませんが、私が知る限り、コロンを含めることはできません。

正しい:

  • Em@il.com:password
  • Em@il.com:p @ 55w:rd
  • Em@il.co.uk:p @ $ worD
  • Em@il.com:パスワード

誤り:

  • Nomail.com:password
  • Nom @ ailcom:パスワード
  • Nomail:password
  • E:m@il.com:password

ありがとう!


FJに感謝します!彼の助けと、私が普段使っているMarkusSipiläからの電子メールによる確認により、次のようになりました。

^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})[ ]?:.*$

もちろん、FJのコード([]?:。*)を電子メール検証文字列の最後に追加するときは、行末のアーチャーを削除する必要がある場合があることに注意してください。「オプション」の部分を追加すると、文字列の後に空(^ $)または(|)を残すことができ、次のようになります。

(^$|^[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})[ ]?:.*$)
4

2 に答える 2

3

電子メールに一致する適切な正規表現を取り、その末尾に追加[ ]?:.*します(角かっこは必要ありませんが、そこに1つのスペースがあることを少しわかりやすくします)。

于 2013-02-05T21:29:57.627 に答える
0

電子メールアドレスにコロンを含めることができないと仮定すると、次のように簡単になります。

$string = 'Em@il.com:p@55w:rd';

$colon = strpos($string, ':');
$email = substr($string, 0, $colon);
$passw = substr($string, $colon + 1);

if ( ! filter_var($email, FILTER_VALIDATE_EMAIL)) {
    die('Invalid email address');
}
if (strlen($passw) < 8) { // For example
    die('Invalid password');
}

正規表現を使用して電子メールアドレスを検証することはほとんど不可能です。電子メールアドレスを検証するための最も高度な正規表現は、ほとんどの場合、その役割を果たしますが、それらは、生物によって維持または理解することさえできない怪物です。

于 2013-02-06T10:03:28.833 に答える