Yii Framework Forum: Wyrażenia Regularne - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Wyrażenia Regularne Rate Topic: -----

#1 User is offline   andrzej1_1 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 67
  • Joined: 16-April 13

Posted 16 August 2013 - 02:05 AM

Witam. Mam problem ze zrobieniem dwóch wyrażeń regularnych:
  • dozwolone: małe i duże litery, cyfry, kropki, kreski, podkreślenia
  • wymagane: jedna duża litera, jedna mała litera, cyfra lub znak specjalny

Z pierwszym zrobiłem takie coś: [a-zA-Z0-9._-] jednak walidator pokazuje że jest błąd
Przy drugim skleciłem coś takiego: [A-Z]{1,}[a-z]{1,}([a-z]{1,}|/!/@/#/$/%/^/&/*)

Jednak oba nie działają, bo zapewne są źle zrobione. Czy mógłby ktoś je poprawić?
0

#2 User is offline   nineinchnick 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 622
  • Joined: 12-September 11
  • Location:Bialystok, Poland

Posted 16 August 2013 - 02:31 AM

Załącz całą regułą walidatora, będzie łatwiej potestować.

Jeśli używasz tych wyrażeń dokładnie tak jak napisałeś to pierwsze zezwala na dokładnie jeden znak z podanego zakresu.

W drugim chyba pomyliłeś / z \.

Moja reguła do haseł:

array('newPassword', 'match', 'pattern' => '/^.*(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$/', 'message'  => Yii::t('UsrModule.usr', 'New password must contain at least one lower and upper case character and a digit.')),


Wymaga przynajmniej jednej cyfry, małej i dużej litery.
Znak zapytania i = w bloku (?=.*\d) oznacza "wyszukiwanie do przodu" i wymaga ciągu dowolnych znaków po których jest jedna cyfra.
Don't be a dick.
2

#3 User is offline   andrzej1_1 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 67
  • Joined: 16-April 13

Posted 16 August 2013 - 05:08 AM

Dobra pierwsze udało mi się zrobić. Ale jak najprościej zrobić drugie? Próbowałem
/^[a-z]{1,}[A-Z]{1,}[0-9]{1,}$/
ale to wymusza odpowiednią kolejność? Jak zmienić to w zestaw, żeby nie musiało być w takiej kolejności?
0

#4 User is offline   nineinchnick 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 622
  • Joined: 12-September 11
  • Location:Bialystok, Poland

Posted 16 August 2013 - 05:39 AM

Tak jak napisałem wcześniej, trzeba używać tzw. "positive lookahead" czyli składni ze znakiem zapytania. Więcej w manualu:

Każdą grupę dajesz w (?=WYRAZENIE), czyli:
/^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])$/


Szukasz dowolnej z grup zawierających dowolne znaki za którymi jest ten z podanego zakresu.
Don't be a dick.
0

#5 User is offline   andrzej1_1 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 67
  • Joined: 16-April 13

Posted 16 August 2013 - 07:26 AM

Niestety nie działa: http://regexp.pl/main/show/219288
0

#6 User is offline   nineinchnick 

  • Master Member
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 622
  • Joined: 12-September 11
  • Location:Bialystok, Poland

Posted 16 August 2013 - 12:47 PM

View Postandrzej1_1, on 16 August 2013 - 07:26 AM, said:

Niestety nie działa: http://regexp.pl/main/show/219288


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


To działa, sprawdziłem.
Don't be a dick.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users