2010-09-06 7 views
5

W jaki sposób umieścić sprawdzanie poprawności w polu, które nie zezwalałoby tylko na znaki specjalne, oznacza, że ​​AB#,[email protected],@#ASD jest dozwolone, ale @#$^& lub # jest niedozwolone. Potrzebuję RegEx dla tej walidacji.Jak używać wyrażenia regularnego, aby sprawdzić, czy dane wejściowe użytkownika nie składają się wyłącznie ze znaków specjalnych?

+2

to nie ma nic wspólnego z jQuery, masz na myśli javascript? –

+5

Nono ... JavaScript został przemianowany na jQuery, didntchya know? – mpen

+0

@OP: Możesz zajrzeć do http://bassistance.de/jquery-plugins/jquery-plugin-validation/ i http: // stackoverflow.com/questions/280759/jquery-validate-how-to-add-a-rule-for-regular-expression-validation – mpen

Odpowiedz

9
str.match(/^[A-Z#@,]+$/) 

dopasuje ciąg ...

  • ... ^ zaczyna i kończy $ z załączonym wzorem
  • ... zawiera żadnych wielkimi literami A-Z (nie będzie pasował niższy litery liter)
  • ... zawiera tylko specjalne znaki #, @ i ,
  • ... ma co najmniej 1 znak (nie pusty ciąg)

Na razie nieczuły, można dodać i na koniec: (i.g. /pattern/i)

** UPDATE **

Jeśli trzeba zweryfikować, czy pole zawiera tylko promocje znaków, można sprawdzić, czy ciąg zawiera tylko znaki, które nie są słowa lub liczby:

if (str.match(/^[^A-Z0-9]*$/i)) { 
    alert('Invalid'); 
} else { 
    alert('Valid'); 
} 

Spowoduje to dopasowanie ciągu znaków zawierającego wyłącznie znaki niealfanumeryczne. Pusty ciąg również będzie nieprawidłowy. Zamień * na +, aby zezwolić na puste łańcuchy.

+0

Myślę, że cię nie zrozumiałem, chodzi o to, że jest zbyt wiele specjalnych znaków i co ja napisano wcześniej to tylko przykłady ["AB #, A89 @, @ # ASD jest dozwolone, ale @ # $^& or # is not allowed"]. Może to być dowolna kombinacja taka jak A * B, AB *, * Ab, ale nie powinno być tylko znaków specjalnych. Jedynym sposobem na użycie znaku specjalnego w tym konkretnym polu jest skojarzenie specjalnego znaku z dowolną cyfrą [np. -9()] lub dowolną postacią. – Arko

+0

yes javascript .. – Arko

2

Jeśli możesz użyć "dopasowania negatywnego" do sprawdzania poprawności, i. mi. wejście jest OK, jeśli regex nie nie mecz, to proponuję

^\W*$ 

Pozwoli to dopasować ciąg, który składa się wyłącznie ze znaków spoza słowa (lub pusty ciąg znaków).

Jeśli potrzebujesz pozytywny mecz, a następnie użyć

^\W*\w.*$ 

To pasuje jeśli istnieje co najmniej jeden znak alfanumeryczny w ciągu.

0

Wierzę, czego szukasz jest coś takiego:

!str.match(/^[@#$^&]*$/) 

Sprawdza, czy łańcuch robi nie zawierać tylko symbole, czyli że zawiera co najmniej jeden znak, który ISN” t symbol.

Powiązane problemy