Avatar billede palito Nybegynder
30. april 2006 - 10:58 Der er 8 kommentarer og
1 løsning

Tjek mønster - regexp

Hvordan kan jeg med regexp tjekke om en variabel ser sådan her ud: "mailadresse1, mailadresse2, mailadresse3", men samtidig også sagtens kan se sådan her ud: "mailadresse"?
Avatar billede nielle Nybegynder
30. april 2006 - 11:28 #1
Sådan:

    if (preg_match("/^mailadresse(\d)?$/", $dinVariabel))
    {
        ...
    }

Alternativt til mønsteret:

    ^mailadresse(\d)?$

- kan du bruge dette:

    ^mailadresse\d{0,1}$

- eller hvis der endda må være mere end ét ciffer (mailadresse42):

    ^mailadresse\d*$
Avatar billede palito Nybegynder
30. april 2006 - 11:39 #2
den skal ikke heddemailadresse. Det var bare et eksempel..

Mailadresserne kan jo være hvad som helst.

Hvordna skla det så se ud?
Avatar billede palito Nybegynder
30. april 2006 - 11:43 #3
Adresserne må kun være fra 0-9a-z, og må ikke være længere end 10 tegn per stk.

Det må kun se således ud: "test1, test2, test3, test4" - altså KUN et komma og et mellemrum, og må ikke slutte med komma eller lignende.

og det skal tilmed være muligt kun at skrive en enkel adresse (i det tilfælde skal ingen kommaer forekomme!)
Avatar billede hmortensen Nybegynder
30. april 2006 - 11:54 #4
Måske sådan her:
function CheckAdrs($str)
{
    $result = true;
    $addresses = explode(",", $str);
    foreach ($addresses as $adr)
    {
        if (!preg_match("/^[a-z0-9]{1,10}$/i", trim($adr)))
        {
            $result = false;
            break;
        }
       
    }
    return $result;
}
Avatar billede palito Nybegynder
30. april 2006 - 12:13 #5
har lavet det

|^([0-9a-z]\s?)+([,]\s?([0-9a-z]\s?)+)*$|
Avatar billede palito Nybegynder
30. april 2006 - 12:13 #6
ellers tak for hjælpen
Avatar billede nielle Nybegynder
30. april 2006 - 12:14 #7
Ok, misforstod åbenbart din formulering.

Jeg ville glemme alt om regulære udtryk i denne sammenhæng. I stedet ville jeg bruge explode():

$dinVariabel = "mailadresse1, mailadresse2, mailadresse3";
$dinVariabelArr = explode(", ");

$ok = true;
foreach ($dinVariabelArr as $mailadresse)
{
    if ($mailadresse == "") $ok = false;
}
if ($ok) echo "Ingen fejl.";
Avatar billede nielle Nybegynder
30. april 2006 - 12:15 #8
Altså:

$dinVariabelArr = explode(", ", $dinVariabel);
Avatar billede palito Nybegynder
30. april 2006 - 18:01 #9
Jeg bruger også explode - men jeg skal bare tjekke om man har brugt mit input-felt som jeg ønsker INDEN jeg deler dem op.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester