Pytanie podstawowe jakie dane walidujesz i ile ich jest? Pytam, ponieważ na wielu stronach są proste formularze z 2-3 polami, do których usilnie podpina się całe biblioteki walidujące gdy to samo można zrobić bardzo szybko pojedynczym regexp albo własną funkcją.
No i warto również chociaż mniej więcej kontrolować spójność walidacji u klienta z walidacją serwerową.
Natomiast w kwestii co lepsze, JS czy HTML to zależy od tego co dokładnie walidujesz, jaki przyjmujesz poziom ufności dla danych wejściowych, w jakim celu dokonujesz walidacji u klienta itp. Osobiście jestem "fanem" wyrażeń regularnych ponieważ dają Ci pełną kontrolę nad danymi i de facto wiele bibliotek walidujących korzysta właśnie z regexp.