[JS] email filter

Pagina: 1
Acties:
  • 193 views

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik gebruik de volgende regex om alleen geldige emailadressen te laten invoeren.
var filter=/^(\w+(?:\.\w+)*)@((?:\w+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
Nu ben ik er alleen achter gekomen dat een koppelteken (een - dus) niet wordt toegestaan in het gedeelte voor de @. Hoe kan ik deze regex aanpassen zodat het koppelteken wordt toegestaan?

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Heb je al gezocht met [url=JS regex email]Google[/]? Ik kom nl. tig oplossingen tegen die zouden moeten werken :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 19-09 22:02

krvabo

MATERIALISE!

Je regex staat nog wel meer (geldige) dingen niet toe.
Na enige tijd zoeken ben ik een tijd geleden de beste functie totnogtoe tegen gekomen, welke afaik helemaal aan de standaarden voldoet:

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
function emailCheck(emailStr) {
    var emailPat=/^(.+)@(.+)$/
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
    var validChars="\[^\\s" + specialChars + "\]";
    var quotedUser="(\"[^\"]*\")";
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
    var atom=validChars + '+';
    var word="(" + atom + "|" + quotedUser + ")";
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

    var matchArray=emailStr.match(emailPat);
    if (matchArray==null) {
        alert("Email address seems incorrect (check @ and .'s)");
        return false;
    }
    var user=matchArray[1];
    var domain=matchArray[2];

    if (user.match(userPat)==null) {
        alert("The username doesn't seem to be valid.");
        return false;
    }

    var IPArray=domain.match(ipDomainPat);
    if (IPArray!=null) {
        // this is an IP address
          for (var i=1;i<=4;i++) {
            if (IPArray[i]>255) {
                alert("Destination IP address is invalid!");
            return false;
            }
        }
        return true;
    }

    var domainArray=domain.match(domainPat);
    if (domainArray==null) {
        alert("The domain name doesn't seem to be valid.");
        return false;
    }

    var atomPat=new RegExp(atom,"g");
    var domArr=domain.match(atomPat);
    var len=domArr.length;
    if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>5) {
        alert("The address must end in a 2-5 length TLD.");
        return false;
    }

    if (len<2) {
        var errStr="This address is missing a hostname!";
        alert(errStr);
        return false;
    }

    return true;
}


Hier kun je vast wel wat mee ;)

[edit]
Hm ik zie net dat .museum niet meegenomen wordt (6 lang), omdat die nieuwer is dan het script :P
Dus even aanpassen naar 6..

[ Voor 3% gewijzigd door krvabo op 19-05-2009 22:13 ]

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik zie niet hoe dit geen scriptrequest of Kan iemand even...?-vraag zou zijn en ik zie ook geen eigen inzet whatsoever; iets wat we hier wel graag zien (Quickstart). Daarbij is er meer dan genoeg te vinden, zoals aangegeven, op google etc.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.