2014-07-07 8 views
5

Trochę utknęłam (RegEx nie jest w ogóle moim mocnym punktem!) - Potrzebuję wyrażenia, które będzie walidować z dowolnym ciągiem zawierającym tylko liczby i litery, ale muszą mieć co najmniej po jednym (wielkie i małe litery są wymienne i dozwolone). Nie może zawierać znaków specjalnych ani białych znaków.RegEx: Musi mieć co najmniej jedną cyfrę i literę, ale nie ma innych znaków/spacji.

Wykonanie pewnych uprzedniego badania znalazłem to, ale to nie wyklucza spacje i mimo moich prób zrobienia, więc nie mogę go zmodyfikować do wykluczenia spacje i znaki specjalne:

^.*(?=.*\d)(?=.*[a-zA-Z]).*$ 

kilka przykładów ciągów, które potrzebują do sprawdzania poprawności:

  • ieoEon43
  • 43ifsiojfdfs
  • 6i
  • ijf943kNFSfsf

Każda pomoc będzie bardzo ceniona! Jeśli to ma znaczenie, uruchamiam te wyrażenia w JavaScript.

Odpowiedz

6

Spróbuj tego:

/^(?=.*[a-z])(?=.*\d)[a-z\d]+$/i 

Regex101 Demo

Objaśnienie:

Regular expression visualization

Debuggex Demo

Edit: Fixed Spec Problem z ial characters.

+0

Dzięki - który pomógł z białej przestrzeni - ale wydaje się nadal akceptować znaki specjalne (np: fdfjf4343FFsk3 £ 3% 3 £ "& * (* & *) przechodzi) – trvo

+0

Niestety, brakowało specjalny znaki na pierwszym przejściu.To działa teraz –

+0

Idealny - dziękuję! – trvo

-4

Iv wykonał demo na regxr 1.0 w oparciu o to, co zrozumiałem z twojego pytania.

Jeśli zastosujemy ten link można zobaczyć demo siebie: Regexr demo

aktualizacja: regex jest: /^([a-z]+[0-9]+|[0-9]+[a-z]+)$/

Można zrobić to przypadek wrażliwe: /^([a-z]+[0-9]+|[0-9]+[a-z]+)$/i

+0

To zatwierdza "a", które nie zawiera liczby. –

2

Another próba zabawy i chwały! (Jest to krótsza!)

^([a-z]+\d+|\d+[a-z]+)\w*$ 

Regular expression visualization

Debuggex Demo

Edit3:

Wykonane małą poprawkę i to teraz DOUBLE prędkość drugiej odpowiedź !!!

JSPERF

+0

Przyjemny pomysł, ale może zawieść ciągi, które zaczynają się i kończą na tej samej klasie znaków ('1a1' lub' a1a'). Naprawiono –

+0

@ TimPietzcker! – Mosho

+1

Znacznie lepiej (chociaż '\ w' również pasuje do' _') :) –

Powiązane problemy