ja to napisałem regex
do sprawdzania numeru wejściowego z mojego formularza:
if (!preg_match("/^0d{10}+|^9d{9}+/",$_POST["number"])){
echo "Error";
}else{
echo "Ok";
}
ten kod sprawdzi minimalną długość, ale jeśli długość jest większa niż 10 lub 9 znaków, to wyrażenie nie działa!
Co powinienem zrobić ? powinienem sprawdzić strlen
po Regeksie czy mogę ograniczyć maksymalną długość?
AKTUALIZACJA:
długość łańcucha powinna wynosić dokładnie 10 znakówjeśli zaczynasz od 0 i powinno być dokładnie 9 znaków, jeśli zaczynasz od 9, i powinieneś zwracać fałsz na inne sposoby (mniej więcej lub więcej, zacznij od różnych liczb i ...)
Odpowiedzi:
0 dla odpowiedzi № 1Być może po prostu chcesz zakotwiczyć ciąg na końcu za pomocą $
. Również może upuścić +
po kwantyfikatorze numerycznym:
^(?:0d{9}|9d{8})$
Zobacz test na stronie regex101.com
0 dla odpowiedzi nr 2
Możesz użyć tego wyrażenia regularnego:
"/^(0d{9}|9d{8})$/"
Umożliwi to długość łańcucha dokładnie 10 znaków, jeśli zaczyna się od 0 i powinna wynosić dokładnie 9 znaków, jeśli wejście zaczyna się od 9.