2016-12-22 4 views
2

Я хочу, чтобы мой пароль пользователя есть правило, как:как соответствовать обратный слеш в регулярном выражении

  1. по крайней мере, один алфавит, по крайней мере, один номер.
  2. может включать в себя специальные символы (почти все специальные символы в же раскладке)
  3. длиной более 8.

это мое регулярное выражение

/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!"#$%&'()*+,-.\/:;<=>[email protected][\]^_`{|}~]{8,}$/ 

но это не соответствует назад слэш. , например, пароль «3e5t1qa2w \» не удастся.

Я использую Laravel проверки (рамочный PHP), так что полный код таков:

 'password' => array(
      'sometimes', 
      'required', 
      'between:8,32', 
      'regex:/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!"#$%&\'()*+,-.\/:;<=>[email protected][\]^_`{|}~]{8,}$/' 
     ), 

здесь реальный код enter image description here

и это один, который использует два назад слэш оленью кожу работы тоже. enter image description here

Кто-нибудь знает, почему?

+0

Я считаю, что вам нужно избежать обратной косой черты с помощью обратной косой черты. – MateoConLechuga

+0

да я, как ...... [назад слэш назад косая черта] ........ но didnot работы – chii

+0

'/' - косая черта или косая черта; '' \ '' - обратная косая черта. – Chris

ответ

0

это один работал:

enter image description here

Как сказал MateoConLechuga, то "]" может вызвать проблемы. поэтому я избегаю «[» и «]» с обратной косой чертой, которые считают, что они всего лишь «персонаж».

и эта ссылка Right way to escape backslash [ \ ] in PHP regex? помогли мне в том, что для соответствия косой чертой мне нужно написать ее три (или четыре) раза.