2014-04-02 17 views
6

Próbuję wykonać następujące czynności z regex ...Regex tylko pozwalają alfanumeryczny

  • Tylko AZ i 0-9
  • Nie jeden znak w swoich
  • nie może być tylko numery na ich własny
  • może być tylko litery na własną rękę, ale co najmniej 2 znaki

mam to tak daleko http://regex101.com/r/yW1pV8 ...

.*[a-zA-Z]{2,}+.* 

To wydaje się spełniać moją krytykę, ale nie powstrzymuje mnie to od wprowadzania innych znaków, takich jak $ _! etc ...

Niektóre poprawne dane badanie jest ...

579 International Road 
International Road 

Niektóre błędne dane jest ...

679 
3 
$£ 
A 

Gdzie jestem będzie niewłaściwy?

+0

Jaki jest '*' za.? – arshajii

+0

Twój przykład nie zawiera danych testowych ....... –

Odpowiedz

4

.* pasuje wszystko, co jest, co nie jest tym, czego chcesz, wydaje się. Ponadto, nie trzeba +, ponieważ X{n,} już oznacza Xco najmniejn razy. Na koniec zapomniałeś części o numerze 0-9. Więc wygląda to tak zrobi:

[a-zA-Z0-9]{2,} 

Niektóre regex smaki mają [a-zA-Z0-9] jako wstępnie zdefiniowane klasy postaci. Na przykład w języku Java jest to \p{Alnum}.

Jeśli chcemy także, aby umożliwić przestrzeni (jak na swoje dane testowe), użyj \s:

(?:\s*[a-zA-Z0-9]{2,}\s*)* 
+0

To nie działa dla mnie z moimi danymi testowymi, zaktualizowałem oryginalny post z tymi danymi – fightstarr20

+1

@ fightstarr20 Wygląda na to, że chcesz także zezwolić na spacje. Zobacz edycję. – arshajii

+0

Po prostu zauważyłem, że brakowało miejsca! Działa to teraz lepiej, ale nadal pozwala na to, że liczby są na własną rękę. – fightstarr20

0
var pattern = new RegExp(/^(?=.*\d)(?=.*[a-zA-Z]).{2,}$/); 
alert(pattern.test(value) + value); 

dla numeru alfa

Powiązane problemy