PHP preg_match

Sekcia: Programovanie 17.08.2018 | 11:53
Avatar php   Návštevník

Mam kod v PHP a mojim zamerom je, aby ten vyraz co skusam mi vyhovuje, co nechcem. Kde robim chybu.

function is_login($string)
{
	return preg_match("/[a-z|A-Z|0-9]/", $string);
}

if(is_login("a.3"))
	echo "is login";
    • RE: PHP preg_match 17.08.2018 | 12:18
      Avatar samalama.   Návštevník

      lebo a je z [a-z] a 3 je z [0-9]

      • RE: PHP preg_match 17.08.2018 | 12:27
        Avatar php   Návštevník

        Hm, ale ja chcem, ze ok je iba ak je a-zA-Z0-9 inac zle. ... co ked dam ., tak mi vrati ze dobre

    • RE: PHP preg_match 17.08.2018 | 13:26
      Avatar wamba   Návštevník

      Buď testuj, že to obsahuje požadované znaky od začátku do konce

      return preg_match('/\A[a-zA-Z0-9]*\z/', $string);
      

      nebo že tam není jiný znak

      return !preg_match('/[^a-zA-Z0-9]/', $string);
      

      popř.

      return !preg_match('/\W/', $string);
      

      nebo

      return preg_match('/\A\w*\z/', $string);
      
      • RE: PHP preg_match 17.08.2018 | 13:43
        Avatar php   Návštevník

        Vdaka.

        Nemas k tomu nejake dobre EN a SK/CZ materialy?

        Co znamenaju \z \A (resp. doc nejaka k tomu)? ../regularni-vyrazy-zaklady.html to nie je.

        A

        [a-zA-Z0-9]*

        som prepisal za

        [a-zA-Z0-9]+
        • RE: PHP preg_match 17.08.2018 | 13:57
          Avatar wamba   Návštevník

          já používám

          man perlre

          CZ přímo pro PHP jsem našel odkaz na tebou odkazované stránce DÍL 4. - Perl-compatible regulární výrazy v PHP - hranice

          \A

          — začátek stringu

          \z

          — konec stringu

          • RE: PHP preg_match 17.08.2018 | 14:09
            Avatar php   Návštevník

            \A \z vs ^ $ \A \z je lahsie zapamatalnejsie, lebo prve-posledne pismeno abecedy a v ANSI su najprv velke pismena a potom male. ^ $ napriklad pozna grep -o.

            $ echo 123456789 |grep -o "...$"
            789
            $ echo 123456789 |grep -o "...\z"
            $