Autor Zpráva
Oskar
Profil *
Po delší době dělám něco v PHP a peru se s regulérními výrazy.

if (preg_match("^(C|X){1}(F|X){1}[0-9]{4}$", $fraze[0])) {
            echo $fraze[0];
          }

Potřeboval bych radu, co dělám blbě. Tímto "filtrem" by měli projít řetězce jako např. CF0000 nebo CX1234 nebo XF6547 nebo XX7893, ale neprojde tím nic :D


vyřešeno ;)

preg_match("#^[CX]{1}[FX]{1}[0-9]{4}$#", $fraze[$i])
Sir Tom
Profil
Oskar:
peru se s regulérními výrazy
Pozor! Jsou to regulÁrní výrazy. ;)
Kubo2
Profil
Oskar:
Oficiálna dokumentácia phpka k PCRE uvádza, že (citujem):

When using the PCRE functions, it is required that the pattern is enclosed by delimiters.
A delimiter can be any non-alphanumeric, non-backslash, non-whitespace character.
>

Čiže v skratke, keď píšeš reguláry v PHP funkciách z rodiny PCRE (preg_*), musia byť uzavreté medzi dvojicou nealfanumerických znakov vylučujúc pritom aj spätné zátvorky a medzery (white-spaces).

Tým pádom to môžu byť (najpoužívanejšie):
• lomítka /
• vlnky ~
• hash signs #
• zavináče @
• bodky · (tiež middots — neskúšal som, ale nie sú to alfanumerické znaky, takže by mali fungovať)
~ a mnoho ďaľších.

Inak ešte k tvojmu reguláru:
^[CX]{1}[FX]{1}[0-9]{4}$
Dá sa prepísať kúsok jednoduchšie:
^[CX][FX]\d{4}$
A hneď je skrátený o 9 znakov :-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: