/ / Regex dla tekstu rozdzielanego przecinkami - php, regex

Regex dla tekstu oddzielonego przecinkami - php, regex

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 № 1

OK, jest tu kilka problemów:

  1. Nie ma funkcji php o nazwie "regex_match"
  2. funkcja używa (), nie []
  3. 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"