2009-06-09 12 views
7

Mam problem, w którym muszę użyć wartości RegularExpressionValidator, aby ograniczyć długość ciągu do 400 znaków.Wyrażenie regularne w celu ograniczenia długości ciągu znaków

Moja twarz była .{0,400}

Moje pytanie: Czy istnieje sposób, aby ograniczyć długość do 400 znaków bez uwzględniania pustych przestrzeniach?

Chcę móc akceptować spacje w ciągu, ale nie liczę ich długości. czy to możliwe?

+0

Nie jest to możliwe z wyrażeniem regularnym, ale jest w wielu językach. W jakim języku próbujesz to wdrożyć? – Copas

+0

Używam formantu RegularExpressionValidator w aplikacji sieci web asp.net (vb.net). – Boopid

Odpowiedz

11

ja dość dużo zgadzam się z Gregiem, ale tutaj jest regex chcesz:

^\s*([^\s]\s*){0,400}$ 

@Boopid: Jeśli naprawdę oznaczało tylko znak spacji, wymienić \ s z miejsca w regex.

+0

Czy to nie powinno być [^ \ s] zamiast [^]? Poza tym: miło! – Stephan202

+0

(czy pytający po "pustych polach" tak naprawdę oznacza jedynie znak spacji?) – Stephan202

+2

Lub po prostu \ S zamiast [^ \ s] –

7

Wygląda na to, że warto napisać własną klasę sprawdzania poprawności, zamiast używać funkcji RegularExpressionValidator. Wyrażenia regularne z pewnością mają swoje zastosowania, ale to nie brzmi jak jeden z nich.

Własny weryfikator może usunąć wszystkie spacje, a następnie sprawdzić długość napisu. Ostatecznie kod będzie bardziej czytelny niż wyrażenie regularne, które robi to samo.

+0

Zgadzam się, po prostu usuń wszystkie białe spacje i sprawdź długość napisu. Prawdopodobnie bardzo wydajne w porównaniu do zaproponowanego powyżej regexu (chociaż to tylko teoria). –

Powiązane problemy