Tworzę pole tekstowe do dodawania tagów oddzielonych przecinkami. (np. php, jquery, js, ruby na szynach) Pole jest podobne do tego na strumieniu stakoverflow, w którym dodajesz znaczniki dla postów.
Chcę zweryfikować dane wejściowe, aby upewnić się, że znacznikizostały wprowadzone poprawnie. Oznacza to, że użytkownicy mogą wpisywać tylko litery, cyfry, spacje i przecinki. Wykonałem następującą operację: regex_match, ale nie jestem całkowicie pewien, czy jest poprawna.
regex_match[/^[a-z, ]+$/i]
Jeśli dane wejściowe zawierają tylko to, co dodałem w regex, pojawia się błąd sprawdzania poprawności, gdy przesyłam formularz. Testowałem i działa, kiedy umieszczam symbole " " ;
To jest moje pierwsze wyrażenie, czy robię to dobrze? Językiem jest PHP.
Odpowiedzi:
1 dla odpowiedzi № 1OK, jest tu kilka problemów:
- Nie ma funkcji php o nazwie "regex_match"
- funkcja używa (), nie []
- zmienne zaczynają się od $. Wnętrze [] jest indeksem.
Wypisana linia spowoduje błąd składni w PHP. Ponieważ "przetestowałeś", oznacza to, że nie jest to kod, którego użyłeś. Proszę wpisać aktualny kod.
Jeśli chodzi o wyrażenie regularne, to dobra pierwsza próba, ale zapomniałeś numerów:
/^[a-z,0-9 ]+$/i
3 dla odpowiedzi № 2
Dlaczego nie skorzystać z str_getcsv
funkcja, Parsuje ciąg CSV do tablicy, a następnie możesz zweryfikować każdy tag indywidualnie za pomocą ctype_alnum
funkcja i odrzuć zniekształcone;)
Oto poprawny wzór regex, jeśli naprawdę go potrzebujesz: -
"/^[a-z0-9]+(, [a-z0-9]+)*$/i"