2016-11-20 10 views
-1

Моя строкаPHP, Regex; разрешить только цифры, буквы и пробелы

  • может содержать только цифры, буквы и пробелы, ничего более
  • должен содержать, по крайней мере, ZWO буквы
  • должны содержать по крайней мере десять цифр

Как отозвать что-то, если моя строка не соответствует этому шаблону?

Я надеюсь, что любой эксперт Regex может мне помочь, потому что я не очень разбираюсь в этом.

Edit:

Это то, что я пытался далеко:

if (preg_match('/^[A-Z]+[0-9]+/', $myString)) { 
    echo "Error!"; 
} 
+0

Мы не здесь, чтобы сделать вашу работу за вас. что ты уже испробовал? – Chris

+0

@ Крис Я обновил свой вопрос. – user7128548

+0

Я часто предпочитаю спрашивать и спрашивать собеседника, а не просто получать ответ в таких случаях, но модераторы здесь не приветствуют этот путь :) В любом случае я попробую сейчас :) Посмотрите, ваше регулярное выражение '/^[AZ] + [az ] + [0-9] +/'говорит, что строка должна иметь несколько заглавных букв в начале, THEN some lowercase и THEN некоторые цифры. Так что «Qwerty10» будет соответствовать, но «theQwerty10» не будет, а «10Querty» не будет ... ваш ход сейчас :) – AlexandrX

ответ

0

Это сделает работу:

/^(?=(?:.*[a-z]){2})(?=(?:.*\d){10})[a-z0-9 ]+$/i 

С его помощью в PHP:

if (preg_match('/^(?=(?:.*[a-z]){2})(?=(?:.*\d){10})[a-z0-9 ]+$/i', $myString)) { 
    echo "OK!\n"; 
} else { 
    echo "Error!\n"; 
} 

Пояснение:

/    : regex delimiter 
^   : start of string 
    (?=   : lookahead 
    (?:   : non capture group 
     .*[a-z] : 0 or more any character followed by a letter 
    ){2}  : end of group, must be present twice 
)    : end of lookahead 
    (?=   : lookahaed 
    (?:   : non capture group 
     .*\d  : 0 or more any character followed by a digit 
    ){10}  : end of group, must be present 10 times 
)    : end of lookahaed 
    [a-z0-9 ]+ : character class, allowed characters are letters, digit and space 
    $    : end of string 
/i    : regex delimiter, case insensitive 

Вы найдете информацию о ПОЛЕЗНОЙ опережающем просмотре here, на группах here

 Смежные вопросы

  • Нет связанных вопросов^_^