S skyman Medlem sedan juli 2001 2 450 inlägg Frågan 4 mars 2003 10:11 #1 function checkform(obj){
if(document.form.fornamn.value.length==""){
alert("Fyll i förnamn!");
document.form.fornamn.focus();
return false;
}
if(document.form.efternamn.value.length==""){
alert("Fyll i efternamn!");
document.form.efternamn.focus();
return false;
}
regexp="[\\\.@]";
if(document.form.epost.value.length<3 || document.form.epost.value.search(regexp)==-1 ){
alert("Du har angett en felaktig epostadress.");
document.form.epost.focus();
return false;
}
regexp = "^[0-9]{5}$";
if(document.form.postnummer.value.length<5 || document.form.postnummer.value.search(regexp)==-1){
alert("Du har angett ett felaktigt postnummer.\nSkriv det med 5 tecken utan mellanslag.");
document.form.postnummer.focus();
return false;
}
regexp = "^[A-Za-z0-9_]+$";
if(document.form.username.value.search(regexp)==-1 || document.form.username.length==""){
alert("Du har använt ogiltiga tecken i ditt alias.\nAnvänd endast A-Za-z0-9_ .");
document.form.username.focus();
return false;
}
if(document.form.password.length<4){
alert("Lösenordet måste vara minst 4 tecken");
document.form.password.focus();
return false;
}
regexp="^[A-Za-z0-9]+$";
if(document.form.password.value.search(regexp)==-1){
alert("Lösenordet får bara innehålla A-Za-z0-9.");
document.form.password.focus();
return false;
}
if(document.form.password.value!=document.form.password2.value){
alert("Lösenorden stämmer inte överens med varandra.");
document.form.password.focus();
return false;
}
return true;
}
Jesper T Medlem sedan nov. 2001 7 144 inlägg Det är en fördel om du kan beskriva felet. Det blir ju en aning lättare då. :)
S skyman Medlem sedan juli 2001 2 450 inlägg Åh...
Jag lämnar password och username tomt, det verkar som om inte regular expressions fungerar tillfresställande...
Får inget felmeddelande...
P Peter S Medlem sedan dec. 2002 5 483 inlägg Du tilldelar inte variablen regexp något reguljärt uttryck utan en sträng. RegExp-variabler kan du bl.a. skapa så här:
var regexp = [b]/[/b][i]regexp-kod[/i][b]/[/b];
:)
S skyman Medlem sedan juli 2001 2 450 inlägg Och hur kommer det se ut då? Det är inte jag som har gjort det, jag ska bara förbättra och det verkar inte ens ha fungerat innan...
regexp=/[\\\.@]/;
regexp = /^[0-9]{5}$/;
regexp = /^[A-Za-z0-9_]+$/;
P Peter S Medlem sedan dec. 2002 5 483 inlägg De variabeldeklarationerna ser bättre ut ;)
Sedan kan du använda t.ex. funktionen test() för att avgöra om värdet på ett fält är korrekt eller inte:
var regexp = /[i]kod[/i]/;
...
// Om värdet inte matchar det reguljära uttrycket, returnerar funktionen [i]false[/i]
if(! regexp.test(document.forms["foo"].elements["bar"].value))
// Gör något
...
:)
S skyman Medlem sedan juli 2001 2 450 inlägg Och funktionen test finns under regexp?
Ett av mina exempel:
var regexp=/[\\\.@]/;
if(document.form.epost.value.length<3 || !regexp.test(document.form.epost.value)){
alert("Du har angett en felaktig epostadress.");
document.form.epost.focus();
return false;
}
P Peter S Medlem sedan dec. 2002 5 483 inlägg Ja, test() är en RegExp-metod.
Exempel:
...
function ex(o){
var regexp = /^([\w])+@(([\w])+([\.]{1})([\w])+)+$/;
if(o.elements["epost"].value.length<3 || ! regexp.test(o.elements["epost"].value)){
alert("Du har angett en felaktig epostadress.");
document.form.epost.focus();
return false;
}
};
...
<form name="form" onsubmit="return ex(this)">
<input type="text" name="epost">
<input type="submit">
</form>
:)
S skyman Medlem sedan juli 2001 2 450 inlägg 1. Hur ser det ut om man ska kolla postnummer?
5 siffror utan mellanslag.
2. Hur ser det ut om man ska ange användarnamn?
A-Z, a-z, 0-9 _ får vara med...
P Peter S Medlem sedan dec. 2002 5 483 inlägg Exempel:
1:
<head>
<script>
function checkForm(o){
if(o.elements["pnr"].value.length != 5 || isNaN(o.elements["pnr"].value)){
alert("...");
return false;
}
};
</script>
</head>
<form onsubmit="return checkForm(this)">
<input type="text" name="pnr" maxlength="5">
<input type="submit">
</form>
2:
<head>
<script>
function checkForm(o){
var regexp = /^[\w]+$/;
if(! regexp.test(o.elements["user"].value)){
alert("...");
return false;
}
};
</script>
</head>
<form onsubmit="return checkForm(this)">
<input type="text" name="user">
<input type="submit">
</form>
:)
S skyman Medlem sedan juli 2001 2 450 inlägg function ex(o){
var regexp = /^([\w])+@(([\w])+([\.]{1})([\w])+)+$/;
if(o.elements["epost"].value.length<3 || ! regexp.test(o.elements["epost"].value)){
alert("Du har angett en felaktig epostadress.");
document.form.epost.focus();
return false;
}
};
Denna funkar inte om personen har en emailadress med en punkt i, tex kalle**.**svensson@telia.se...
P Peter S Medlem sedan dec. 2002 5 483 inlägg Testa denna:
function ex(o){
var regexp = /^(([\w])+([\.]){1})*([\w])+@([\w])+(([\.]{1})([A-Za-z]){2,4})+$/;
if(o.elements["epost"].value.length<3 || ! regexp.test(o.elements["epost"].value)){
alert("Du har angett en felaktig epostadress.");
document.form.epost.focus();
return false;
}
};
:)
S skyman Medlem sedan juli 2001 2 450 inlägg Kanon!
Det funkade.
Tcka så jättemycket :)
B Broms Medlem sedan sep. 2002 188 inlägg Peter, du är ruskigt bra på html/javascript :p
S skyman Medlem sedan juli 2001 2 450 inlägg En fråga till:
Jag ska kolla så att datum är i formen 2003-03-14 och att tiden är i formen 11:50 ...
Förmodar att det skulle vara något liknande:
var regexp = /^((([\w]){4})+([\-]){1})*(([\w]){2})+([\-]){1})*(([\w]){2})))+$/;
var regexp = /^((([\w]){2})+([\:]){1})*(([\w]){2})))+$/;
Men hur skriver man om det bara ska vara siffror, antar att [/w] betyder bokstav...
Nexus86 Medlem sedan okt. 2002 3 030 inlägg En fråga jag med, finns det någon replacefunktion för reguljära uttryck i javascript?
dectgap Medlem sedan sep. 2002 1 655 inlägg Jadå, och föga förvånande heter metoden replace() .
Ett litet exempel:
<script type="text/javascript">
str = "En hårig katt.";
regexp = /(hårig)/;
str = str.replace(regexp, "luden");
document.write(str);
</script>