webForumDet fria alternativet

Email validering

18 svar · 1 024 visningar · startad av Webslave

WebslaveMedlem sedan maj 2002647 inlägg
#1

Jag trodde jag skulle hitta det här i detta forum men faktiskt inte.

Jag har letat efter ett script som validerar email. Det ska helt enkelt kolla att det är en godkänd epost (blabla@blabla.com etc).

Skulle uppskatta hjälp ;)

icaaqMedlem sedan okt. 20005 273 inlägg
WebslaveMedlem sedan maj 2002647 inlägg
#3

Det där verkar inte vara så säkert... det ser ut som om man bara behöver ha ett "@" med så är det ok, jag tänkte mer på något som kollar att det står något framför "@", bakom "@" och att det är .com/net/se/nu etc på slutet... några andra idéer?

ViktorMedlem sedan aug. 20021 752 inlägg
#4

Jag kör med den här på min sida,

function checkEmail(email)
{
	var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
	var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";

	var reg1 = new RegExp(reg1str)
	var reg2 = new RegExp(reg2str)

	return ((!reg1.test(email)) && (reg2.test(email)))
}

Kommer inte ihåg vad den kollar efter men du kan ju prova den om den duger :)

/Viktor

WebslaveMedlem sedan maj 2002647 inlägg
#5

Det skulle jag jätte gärna om jag förstod någonting alls av den :)
För det första så ser jag inget alert kommando som talar om att det inte är en giltig adress, sedan så vet jag inte direkt hur man kopplar den till mitt formulär (vad formuläret ska heta dvs.) Om någon kunde förklara detta så skulle det nog hjälpa :D

BroskanMedlem sedan mars 2000126 inlägg
#6

Validering

Du kan ju testa den här. Jag har lagt in alert där när det blir fel.

<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT LANGUAGE="JavaScript">

function check(str){
var mailPattern = /^[\w\.\-]+@[\w\-\.]+\.[a-z]{2,3}$/i;
if(mailPattern.test(str)){
return true;
} else {
alert('Felaktig mailadress');
return false;
}
}

</SCRIPT>
</HEAD>
<BODY>
<FORM NAME="formen" ACTION="ny_sida.asp" onSubmit="return check(formen.text1.value);">
Email:<BR>
<INPUT TYPE="text" NAME="text1" SIZE="20">
<BR>
<INPUT TYPE="submit" VALUE="Skicka">
<BR>
</BODY>
</HTML>

//Broskan

ViktorMedlem sedan aug. 20021 752 inlägg
#7

Webslave skrev:

Det skulle jag jätte gärna om jag förstod någonting alls av den :)
För det första så ser jag inget alert kommando som talar om att det inte är en giltig adress, sedan så vet jag inte direkt hur man kopplar den till mitt formulär (vad formuläret ska heta dvs.) Om någon kunde förklara detta så skulle det nog hjälpa :D

Det är en funktion, dvs från en annan funktion skickar du med epost adressen till den funktionen som jag postade, om epost adressen är rätt så retuneras true annars false :)

function test()
{
	if(!checkEmail(document.register.email.value))
		alert("Please enter a valid email address.");
	else
		document.register.submit();
}

/Viktor

ViktorMedlem sedan aug. 20021 752 inlägg
#8

DELETE

WebslaveMedlem sedan maj 2002647 inlägg
#9

Ok... tackar för alla tips, jag kom dock på en sak. Jag har glömt att säga att jag redan har en OnSubmit koll till det formuläret. Kan någon hjälpa mig att "lägga in" email kollen i det scriptet?

      function KollaPassword(){
        if (document.redigera.password.value != document.redigera.password2.value){
          document.redigera.password.value="";
	  document.redigera.password2.value="";
	  alert("Lösenorden måste vara lika!")
	  return false
	}
          var pass1 = document.redigera.password.value;
          var pass2 = document.redigera.password2.value;

          if((pass1.length !=0) && (pass2.length !=0)){
            return true;
          }
          else{
            alert("Du måste fylla i båda lösenorden!");
            return false;
          }
      }

Om det inte går så får jag lov att tacka i alla fall ;)

ViktorMedlem sedan aug. 20021 752 inlägg
#10

Jag antar att du har en funktion som ser ut såhär (typ)

function test()
{
	if(KollaPassword())
		document.register.submit();
}

då är det bara att ändra den till detta (och lägga till den funktion som jag skrev ovan och din "KollaPassword" funktion. Då måste även byta ut checkEmail argumentet så att du skickar med rätt text box

function test()
{
	if(KollaPassword())
	{
		if(!checkEmail(document.register.email.value))
			alert("Please enter a valid email address.");
		else
			document.register.submit();
	}
}

/Viktor

WebslaveMedlem sedan maj 2002647 inlägg
#11

Nu blev jag yr... kan du skriva ut hela koden som du vill att jag ska lägga in... blev för mycket om jag ska klippa och klistra... jag kan inte JavaScript (som om det inte märks).
Du kan även visa vart min funktion ska ligga, så att jag slipper fråga ÄNNU mer :)

PS. Funktionen jag har ser ut som den jag postade alldeles ovanför ditt senaste DS.

ViktorMedlem sedan aug. 20021 752 inlägg
#12

ok, om det är all kod som du har så blir den nya koden såhär
Som vanligt så får du ändra parametern för checkEmail till ditt email fält

//Start new code
function checkEmail(email)
{
	var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
	var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";

	var reg1 = new RegExp(reg1str)
	var reg2 = new RegExp(reg2str)

	return ((!reg1.test(email)) && (reg2.test(email)))
}
//End new code
function KollaPassword()
{
	// Start new code
	if(!checkEmail(document.register.email.value))
	{
		alert("Please enter a valid email address.");
		return(false);
	}
	//End new code
	if(document.redigera.password.value != document.redigera.password2.value)
	{
		document.redigera.password.value="";
		document.redigera.password2.value="";
		alert("Lösenorden måste vara lika!")
		return false
	}
	var pass1 = document.redigera.password.value;
	var pass2 = document.redigera.password2.value;
	if((pass1.length !=0) && (pass2.length !=0))
	{
		return true;
	}
	else
	{
		alert("Du måste fylla i båda lösenorden!");
		return false;
	}
}
WebslaveMedlem sedan maj 2002647 inlägg
#13

Ok... tacakr :)

ViktorMedlem sedan aug. 20021 752 inlägg
#14

??
Du kör bara som du alltid har kört :) Om email adressen är rätt så händer inget om den är fel så kommer ett felmedelande upp och funktionen retunerar false.
Du anroppar bara "KollaPassword()", som i sin tur anroppar "checkEmail(email)".

/Viktor

JojoxxMedlem sedan juni 20004 308 inlägg
#15

Snickrade ihop en liten String-prototype med ett regexp. Borde vara rätt ok.

String.prototype.isValidEmail = function(){
	return !!this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9|.|-|_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9|.|-|_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/)
}

Alltså;

var epost="someadress@domain.com";
if(epost.isValidEmail()){
// e-post adressen är ok.
} else {
// eller inte.
}

Obs. att prototypen måste vara registrerad innan anropet sker.

MickeA.comMedlem sedan feb. 20034 441 inlägg
#16

Jojoxx skrev:

String.prototype.isValidEmail = function(){
	return !!this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9|.|-|_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9|.|-|_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/)
}

Jag har använt ovanstående ett bra tag, men upptäckte igår att den gnäller på epostadresser med - (bindestreck) i.

Det är inte så bra, skulle vilja få med det i mönstret ovan, men vet inte hur jag ska göra.

Tack!

J.N.Medlem sedan apr. 20031 660 inlägg
#17

HEJ!

Eftersom det står [a-zA-Z0-9|.|-|_] på några ställen får du ge ett exempel på den adress du vill godkänna.

Eller stoppar du in |.|-|_ mellan de klamrar där du vill ha med det.

Peter SMedlem sedan dec. 20025 483 inlägg
MickeA.comMedlem sedan feb. 20034 441 inlägg
#19

Peter S skrev:

http://www.jojoxx.net/jscript/archive/show.asp?id=23

Funkade jättebra, tack!

176 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
173 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)