私はjQueryが初めてなので、電子メールアドレスを検証するためにそれを使用する方法を考えていました。
そのためには、通常の古いJavaScriptを使用できます。
function isEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
電子メールを検証するjQuery関数
特に私のフォームに検証が必要なフィールドが1つしかない場合は特にプラグインを使用したくありません。私はこの関数を使い、Eメールフォームフィールドを検証する必要があるときはいつでもそれを呼び出します。
function validateEmail($email) {
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
return emailReg.test( $email );
}
そして今これを使用する
if( !validateEmail(emailaddress)) { /* do stuff here */ }
乾杯!
jQuery validation plugin を使用する理由はいくつかあります。
あなたは検証しました。エラーを表示し、有効な場合は消去して、おそらく合計でいくつのエラーを表示する必要がありますか?それはあなたのために扱うことができる多くのものがあり、車輪を再発明する必要はありません。
また、もう1つの大きな利点は、CDNでホストされていることです。現在のバージョンはこの回答の時点にあります: http://www.asp.net/ajaxLibrary/CDNjQueryValidate16 .ashx これは、クライアントのロード時間が短縮されることを意味します。
http://bassistance.de/jquery-plugins/jquery-plugin-validation/ を見てください。それはフォームのための強力な検証システムを構築することを可能にするNice jQueryプラグインです。いくつかの便利なサンプルがあります ここに。そのため、フォーム内の電子メールフィールドの検証は次のようになります。
$("#myform").validate({
rules: {
field: {
required: true,
email: true
}
}
});
詳細とサンプルについては、 電子メールメソッドのドキュメント を参照してください。
<!-- Dont forget to include the jQuery library here -->
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#validate").keyup(function(){
var email = $("#validate").val();
if(email != 0)
{
if(isValidEmailAddress(email))
{
$("#validEmail").css({
"background-image": "url('validYes.png')"
});
} else {
$("#validEmail").css({
"background-image": "url('validNo.png')"
});
}
} else {
$("#validEmail").css({
"background-image": "none"
});
}
});
});
function isValidEmailAddress(emailAddress) {
var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
return pattern.test(emailAddress);
}
</script>
<style>
#validEmail
{
margin-top: 4px;
margin-left: 9px;
position: absolute;
width: 16px;
height: 16px;
}
.text
{
font-family: Arial, Tahoma, Helvetica;
}
</style>
<title>Live Email Validation with jQuery Demo</title>
</head>
<body>
<div class="text"><h1>Reynoldsftw.com - Live Email Validation</h1><h2>Type in an email address in the box below:</h2></div>
<div><input type="text" id="validate" width="30"><span id="validEmail"></span></div>
<div class="text"><P>More script and css style
ソース:htmldrive.com
Verimail.js 、それに JQueryプラグインもあります 。
どうして? Verimailは以下をサポートします:
検証のほかに、Verimail.jsも提案します。そのため、一般的な電子メールドメイン(hotmail.com、gmail.comなど)に非常によく似た間違ったTLDまたはドメインを持つ電子メールを入力した場合は、これを検出して修正を提案できます。
例:
等々..
JQueryでそれを使うには、あなたのサイトに verimail.jquery.js を含めて、以下の関数を実行するだけです。
$("input#email-address").verimail({
messageElement: "p#status-message"
});
Message要素は、メッセージが表示される要素です。これは、「あなたのEメールは無効です」から「あなたはどういう意味ですか...」までのすべてです。
フォームがあり、電子メールが有効でない限り送信できないようにフォームを制限したい場合は、次のようにgetVerimailStatus関数を使用してステータスを確認できます。
if($("input#email-address").getVerimailStatus() < 0){
// Invalid
}else{
// Valid
}
この関数は、オブジェクトComfirm.AlphaMail.Verimail.Statusに従って整数のステータスコードを返します。しかし、一般的な経験則では、0未満のコードはエラーを示すコードです。
function isValidEmailAddress(emailAddress) {
var pattern = /^([a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+(\.[a-z\d!#$%&'*+\-\/=?^_`{|}~\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+)*|"((([ \t]*\r\n)?[ \t]+)?([\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]))*(([ \t]*\r\n)?[ \t]+)?")@(([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;
return pattern.test(emailAddress);
};
if( !isValidEmailAddress( emailaddress ) ) { /* do stuff here (email is invalid) */ }
これはユーザによって提供されました Luca Filosofi この回答の中に この回答の中に
<script type="text/javascript">
$(document).ready(function() {
$('.form_error').hide();
$('#submit').click(function(){
var name = $('#name').val();
var email = $('#email').val();
var phone = $('#phone').val();
var message = $('#message').val();
if(name== ''){
$('#name').next().show();
return false;
}
if(email== ''){
$('#email').next().show();
return false;
}
if(IsEmail(email)==false){
$('#invalid_email').show();
return false;
}
if(phone== ''){
$('#phone').next().show();
return false;
}
if(message== ''){
$('#message').next().show();
return false;
}
//ajax call php page
$.post("send.php", $("#contactform").serialize(), function(response) {
$('#contactform').fadeOut('slow',function(){
$('#success').html(response);
$('#success').fadeIn('slow');
});
});
return false;
});
});
function IsEmail(email) {
var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if(!regex.test(email)) {
return false;
}else{
return true;
}
}
</script>
<form action="" method="post" id="contactform">
<table class="contact-table">
<tr>
<td><label for="name">Name :</label></td>
<td class="name"> <input name="name" id="name" type="text" placeholder="Please enter your name" class="contact-input"><span class="form_error">Please enter your name</span></td>
</tr>
<tr>
<td><label for="email">Email :</label></td>
<td class="email"><input name="email" id="email" type="text" placeholder="Please enter your email" class="contact-input"><span class="form_error">Please enter your email</span>
<span class="form_error" id="invalid_email">This email is not valid</span></td>
</tr>
<tr>
<td><label for="phone">Phone :</label></td>
<td class="phone"><input name="phone" id="phone" type="text" placeholder="Please enter your phone" class="contact-input"><span class="form_error">Please enter your phone</span></td>
</tr>
<tr>
<td><label for="message">Message :</label></td>
<td class="message"><textarea name="message" id="message" class="contact-input"></textarea><span class="form_error">Please enter your message</span></td>
</tr>
<tr>
<td></td>
<td>
<input type="submit" class="contactform-buttons" id="submit"value="Send" />
<input type="reset" class="contactform-buttons" id="" value="Clear" />
</td>
</tr>
</table>
</form>
<div id="success" style="color:red;"></div>
非常に単純な解決策はhtml5検証を使うことです:
<form>
<input type="email" required pattern="[^@]+@[^@]+\.[a-zA-Z]{2,6}">
<input type="submit">
</form>
これにより、より徹底的な検証が実行されます。たとえば、john..doe @ example.comのように、ユーザー名の連続するドットと照合されます。
function isValidEmail(email)
{
return /^[a-z0-9]+([-._][a-z0-9]+)*@([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,4}$/.test(email)
&& /^(?=.{1,64}@.{4,64}$)(?=.{6,100}$).*/.test(email);
}
JavaScriptで正規表現を使用してEメールアドレスを検証する を参照してください。
基本的なフォームがある場合は、入力タイプをemailにするだけです。<input type="email" required>
これはHTML5属性を使用するブラウザにはうまくいくでしょう、そしてあなたはJSさえ必要としません。上記のスクリプトをいくつか使用しても電子メールの検証を使用するだけでは、それほど効果はありません。
[email protected] [email protected] [email protected]
etc ...すべてが「本物の」Eメールとして検証されます。そのため、同じアドレスを入力するためにユーザーが自分の電子メールアドレスを2回入力する必要があることを確認したほうがよいでしょう。方法。しかし、それがEメールであることを確認しているだけの場合は、HTML5の入力に従ってください。
これはFireFoxとChromeで動作します。それはInternet Explorerでは動作しないかもしれません...しかしInternet Explorerは吸います。それでそれがある...
function isValidEmail(emailText) {
var pattern = new RegExp(/^((([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);
return pattern.test(emailText);
};
こんな感じで使う:
if( !isValidEmail(myEmail) ) { /* do things if myEmail is valid. */ }
function validateEmail(emailaddress){
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if(!emailReg.test(emailaddress)) {
alert("Please enter valid email id");
}
}
Fabianの答えを使用しているときに私が遭遇した問題は、Razorの@
シンボルのためにMVCビューでそれを実装することです。そのようにエスケープするには、追加の@
シンボルを含める必要があります。@@
function isEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
私はこのページの他の場所でそれを見ませんでした、それで私はそれが役に立つかもしれないと思いました。
これがMicrosoftの link の使い方です。
上記のコードをテストしたところ、次のようなjsが得られました。
function validateEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
それはまさにそれがするべきことをしています。
<script type = "text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type = "text/javascript">
function ValidateEmail(email) {
var expr = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
return expr.test(email);
};
$("#btnValidate").live("click", function () {
if (!ValidateEmail($("#txtEmail").val())) {
alert("Invalid email address.");
}
else {
alert("Valid email address.");
}
});
</script>
<input type = "text" id = "txtEmail" />
<input type = "button" id = "btnValidate" value = "Validate" />
ここに着陸しました.....ここに終わった: https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
...これは以下の正規表現を提供します。
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/
...私はjQuery検証プラグインのreadmeに関するメモのおかげで見つけました: https://github.com/jzaefferer/jquery-validation/blob/master/README.md#reporting-an-issue
したがって、 @Fabian の answer の更新版は次のようになります。
function IsEmail(email) {
var regex = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
return regex.test(email);
}
それが役立つことを願っています
混乱を招くような長年にわたる正規表現の一致よりも良い保守可能な解決策を使用したいと思う人のために、私は数行のコードを作成しました。バイトを節約したい人は、RegExの変種に固執してください:)
これは以下を制限します。
とにかく、それでも漏れる可能性があるので、これをサーバー側の検証+電子メールリンクの検証と必ず組み合わせてください。
これは JSFiddleです
//validate email
var emailInput = $("#email").val(),
emailParts = emailInput.split('@'),
text = 'Enter a valid e-mail address!';
//at least one @, catches error
if (emailParts[1] == null || emailParts[1] == "" || emailParts[1] == undefined) {
yourErrorFunc(text);
} else {
//split domain, subdomain and tld if existent
var emailDomainParts = emailParts[1].split('.');
//at least one . (dot), catches error
if (emailDomainParts[1] == null || emailDomainParts[1] == "" || emailDomainParts[1] == undefined) {
yourErrorFunc(text);
} else {
//more than 2 . (dots) in emailParts[1]
if (!emailDomainParts[3] == null || !emailDomainParts[3] == "" || !emailDomainParts[3] == undefined) {
yourErrorFunc(text);
} else {
//email user
if (/[^a-z0-9!#$%&'*+-/=?^_`{|}~]/i.test(emailParts[0])) {
yourErrorFunc(text);
} else {
//double @
if (!emailParts[2] == null || !emailParts[2] == "" || !emailParts[2] == undefined) {
yourErrorFunc(text);
} else {
//domain
if (/[^a-z0-9-]/i.test(emailDomainParts[0])) {
yourErrorFunc(text);
} else {
//check for subdomain
if (emailDomainParts[2] == null || emailDomainParts[2] == "" || emailDomainParts[2] == undefined) {
//TLD
if (/[^a-z]/i.test(emailDomainParts[1])) {
yourErrorFunc(text);
} else {
yourPassedFunc();
}
} else {
//subdomain
if (/[^a-z0-9-]/i.test(emailDomainParts[1])) {
yourErrorFunc(text);
} else {
//TLD
if (/[^a-z]/i.test(emailDomainParts[2])) {
yourErrorFunc(text);
} else {
yourPassedFunc();
}}}}}}}}}
これを使って
if ($this.hasClass('tb-email')) {
var email = $this.val();
var txt = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if (!txt.test(email)) {
e.preventDefault();
$this.addClass('error');
} else {
$this.removeClass('error');
}
}
Jquery Validation Validation Pluginにバグがありますこれを変更するには@でのみ検証します
コードをこれに変更
email: function( value, element ) {
// From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29
// Retrieved 2014-01-14
// If you have a problem with this implementation, report a bug against the above spec
// Or use custom methods to implement your own email validation
return this.optional( element ) || /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test( value );
}
あなたはこれを見るべきです: jquery.validate.js 、あなたのプロジェクトにそれを追加してください
このようにそれを使う:
<input id='email' name='email' class='required email'/>
checkRegexp( email, /^((([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, "eg. [email protected]" );
参照:JQUERY UI WEBSITE
もう一つの簡単で完全な選択肢:
<input type="text" id="Email"/>
<div id="ClasSpan"></div>
<input id="ValidMail" type="submit" value="Valid"/>
function IsEmail(email) {
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
}
$("#ValidMail").click(function () {
$('span', '#ClasSpan').empty().remove();
if (IsEmail($("#Email").val())) {
//aqui mi sentencia
}
else {
$('#ClasSpan').append('<span>Please enter a valid email</span>');
$('#Email').keypress(function () {
$('span', '#itemspan').empty().remove();
});
}
});
ボタンの状態を処理しながら、入力中に電子メールを検証します。
$("#email").on("input", function(){
var email = $("#email").val();
var filter = /^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
if (!filter.test(email)) {
$(".invalid-email:empty").append("Invalid Email Address");
$("#submit").attr("disabled", true);
} else {
$("#submit").attr("disabled", false);
$(".invalid-email").empty();
}
});
今作成した単純化されたものが、必要なことを実行します。英数字、ピリオド、アンダースコア、@に限定してください。
<input onKeyUp="testEmailChars(this);"><span id="a"></span>
function testEmailChars(el){
var email = $(el).val();
if ( /^[[email protected]]+$/.test(email)==true ){
$("#a").html("valid");
} else {
$("#a").html("not valid");
}
}
他の人の助けを借りて作られました
あなたはあなた自身の機能を作成することができます
function emailValidate(email){
var check = "" + email;
if((check.search('@')>=0)&&(check.search(/\./)>=0))
if(check.search('@')<check.split('@')[1].search(/\./)+check.search('@')) return true;
else return false;
else return false;
}
alert(emailValidate('[email protected]'));
この正規表現は[email protected]のような重複ドメイン名を防ぎ、[email protected]のようにドメインを2回だけ許可します。 [email protected]のような数字からの文字列も許可されません。
regexp: /^([a-zA-Z])+([a-zA-Z0-9_.+-])+\@(([a-zA-Z])+\.+?(com|co|in|org|net|edu|info|gov|vekomy))\.?(com|co|in|org|net|edu|info|gov)?$/,
ではごきげんよう !!!!!
if($("input#email-address").getVerimailStatus() < 0) {
(incorrect code)
}
if($("input#email-address").getVerimailStatus() == 'error') {
(right code)
}
jQuery Validation を使用して、1行のHTMLで電子メールと電子メール検証メッセージを検証できます。type="email" required data-msg-email="Enter a valid email account!"
data-msg-email パラメータを使用して、パーソナライズされたメッセージを配置するか、またはこのパラメータを配置しないで、デフォルトのメッセージが表示されます。「有効なメールアドレスを入力してください。」
完全な例:
<form class="cmxform" id="commentForm" method="get" action="">
<fieldset>
<p>
<label for="cemail">E-Mail (required)</label>
<input id="cemail" type="email" name="email" required data-msg-email="Enter a valid email account!">
</p>
<p>
<input class="submit" type="submit" value="Submit">
</p>
</fieldset>
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.validate.js"></script>
<script>
$("#commentForm").validate();
</script>
この質問は一見するよりも答えるのが難しいです。あなたが正しく電子メールを扱いたいならば。
「すべてを統治するための正規表現」を探している世界中の人々がたくさんいましたが、真実は電子メールプロバイダのトーンがあるということです。
どうしたの?まあ、 "a_z%@gmail.comは存在できませんが、他のプロバイダを通じてそのようなアドレスが存在するかもしれません" [email protected]。
どうして? RFCによると: https://en.wikipedia.org/wiki/Email_address#RFC_specification 。
講義を容易にするために抜粋します。
The local-part of the email address may use any of these ASCII characters:
- uppercase and lowercase Latin letters A to Z and a to z;
- digits 0 to 9;
- special characters !#$%&'*+-/=?^_`{|}~;
- dot ., provided that it is not the first or last character unless quoted, and provided also that it does not appear consecutively unless quoted (e.g. [email protected] is not allowed but "John..Doe"@example.com is allowed);[6]
Note that some mail servers wildcard local parts, typically the characters following a plus and less often the characters following a minus, so fred+bah@domain and fred+foo@domain might end up in the same inbox as fred+@domain or even as fred@domain. This can be useful for tagging emails for sorting, see below, and for spam control. Braces { and } are also used in that fashion, although less often.
- space and "(),:;<>@[\] characters are allowed with restrictions (they are only allowed inside a quoted string, as described in the paragraph below, and in addition, a backslash or double-quote must be preceded by a backslash);
- comments are allowed with parentheses at either end of the local-part; e.g. john.smith(comment)@example.com and (comment)[email protected] are both equivalent to [email protected].
だから、私はそのような電子メールアドレスを所有することができます。
A__z/J0hn.sm{it!}[email protected]
あなたがこのアドレスを試すと、ネット全体に投稿された正規表現の全部または大部分に失敗するでしょう。しかし、このアドレスはRFCの規則に従っているので、かなり有効です。
これらの正規表現でチェックされた場所に登録できないという私の欲求不満を想像してみてください!
Eメールアドレスを本当に検証できるのは、Eメールアドレスの提供者だけです。
対処方法は?
ほとんどの場合、ユーザーが無効な電子メールを追加しても問題ありません。あなたはHTML 5のinput type = "email"に頼ることができます。これはRFCに対して near を実行していますが、失敗する可能性はほとんどありません。 HTML5入力タイプ= "電子メール"の情報: https://www.w3.org/TR/2012/WD-html-markup-20121011/input.email.html
たとえば、これはRFCの有効なEメールです。
"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com
しかし、html5の検証では、@の前のテキストに "または()の文字を含めることはできません。これは実際には正しくありません。
とにかく、あなたはEメールアドレスを受け入れて、そのEメールアドレスにEメールメッセージを送ることによってこれをするべきです、ユーザーは正当性を確認するために訪問しなければなりません。
これをしている間のよい習慣はユーザタイプミスを避けるために「あなたの電子メールをもう一度入力してください」入力です。これでは不十分な場合は、「これはあなたの現在のEメールですか?」というタイトルのpre-submit modal-windowを追加してください。そうすると、ユーザーがh2タグ内に入力したメールがわかります。 - 彼らが入力したメール、次に「はい、送信する」ボタン。
$.validator.addMethod("mymail", function(value, element) {
return this.optional( element ) || /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test( value );
}, "Enter valid email!");
This may help! small modification to the answer "user4974898"!
私はjqvalidateバージョン1.11.0からこのコードを取り、追加の方法としてバージョン1.16.0で実装しました。できます
jQuery.validator.addMethod("strictemail", function(value, element) {
var valid = /^((([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.test(value);
return valid;
}, "Escribe un correo v\u00e1lido"
);
そして電子メールのルールで
'correo': {
required: 'Por favor ingresa tu correo',
email: 'Escribe un correo v\u00e1lido',
strictemail:'Escribe un correo v\u00e1lido'
}
私のカスタマーフォーマットにemailCustomFormat
を使ったメソッドregex
を作りました。
jQuery.validator.addMethod("emailCustomFormat", function (value, element) {
return this.optional(element) || /^([\w-\.]+@@([\w-]+\.)+[\w-]{2,4})?$/.test(value);
}, abp.localization.localize("FormValidationMessageEmail"));// localized message based on current language
それならあなたはこのようにそれを使うことができます
$("#myform").validate({
rules: {
field: {
required: true,
emailCustomFormat : true
}
}
});
この正規表現を受け入れる
[email protected]
、[email protected]
だがこれではない
abc@abc
、[email protected]
、[email protected]
これがあなたに役立つことを願っています
他の人が述べたように、正規表現を使用して、電子メールアドレスがパターンと一致するかどうかを確認できます。ただし、パターンに一致する電子メールは引き続き送信できますが、私の場合はまだバウンスまたは偽のスパム電子メールです。
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
return regex.test(email);
電子メールアドレスが本物で現在アクティブであるかどうかを確認するAPIを使用できます。
var emailAddress = "[email protected]"
response = $.get("https://isitarealemail.com/api/email/validate?email=" +
emailAddress,
function responseHandler(data) {
if (data.status === 'valid') {
// the email is valid and the mail box is active
} else {
// the email is incorrect or unable to be tested.
}
})
詳細については、 https://isitarealemail.com または ブログ投稿 を参照してください
jquery.validate.jsを使用してください 、Microsoft ajax CDNがあります。
$('#form').validate({
rules:{
"name":{
required:true,
maxlength:40
},
"email":{
required:true,
email:true, //for validate email
maxlength:100
},
"message":{
required:true
}
}
});
上記のように、これはあなたが私に尋ねれば十分に良いです。
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z0-9]{2,4})+$/;
しかし、ドメインの末尾(.com、.nu、.netなど)に数字(これが私の好みです)を含めたくない場合は、編集後のバージョンは次のようになります。
var regex = /^([a-zA-Z0-9_.+-])+\@(([a-zA-Z0-9-])+\.)+([a-zA-Z]{2,4})+$/;