Dlaczego wyrażenie regularne nie akceptuje polskich znaków ?

0

Przeprowadzam walidację i nie wiem dlaczego, dla pierwszej litery walidacji nie przechodzą polskie znaki, a powinny. Takiego problemu nie ma dalszych pozycjach. Gdzie tu może być błąd to nie mam pojęcia.

 else if(!preg_match('/^[A-Z-ĄĘŁŃÓŚŹŻ][a-z-ąćęłńóśźż]{2,12}$/', $val))
5

Regexy domyślnie działają w trybie ASCII. Potrzebujesz włączyć tryb Unicode, poprzez użycie flagi u.
https://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

Poza tym, w pierwszej grupie pominąłeś Ć.

2

Czy używasz tego w UTF8 ?
Musisz mieć plik PHP w UTF-8.

  $val = "KasiakównaĄAAAAAAAAA";
  if ( preg_match('/^[A-Z-ĄĘŁŃÓŚŹŻ][a-z-ąćęłńóśźż]{2,12}$/', $val) == true ) {
    echo "TRUE" ;
  } else {
    echo "FALSE" ; 
  }

ZWRACA FALSE ;

  $val = "Kąsiakówna";
  if ( preg_match('/^[A-Z-ĄĘŁŃÓŚŹŻ][a-z-ąćęłńóśźż]{2,12}$/', $val) == true ) {
    echo "TRUE" ;
  } else {
    echo "FALSE" ; 
  }

ZWRACA TRUE ;

1 użytkowników online, w tym zalogowanych: 0, gości: 1