2010-09-04 3 views
0

Я использую регулярное выражение для поля, введенного пользователем, чтобы убедиться, что они ввели от 1 до 20 символов.Какое лучшее регулярное выражение для проверки поля?

Вот код:

$post_validations = array("title" => '/^[[:alnum:][:punct:][:space:]]{1,100}$/'); 

Но всякий раз, когда пользователь вводит иностранный символ или специальный символ кавычек из MS Word (я не могу вставить его в здесь, он преобразует его в нормальную цитату!) регулярное выражение не возвращает true, и оно показывает ошибку.

Я задавался вопросом, что будет лучшим регулярным выражением?

Благодаря

+1

Какие функции вы используете для вычисления выражения? PCRE или POSIX? Потому что вы используете классы символов POSIX. В любом случае вы должны переключиться на PCRE. И какова ошибка? –

ответ

6

Если все, что вы хотите это знать, что это от 1 до 20 символов, то почему бы не использовать strlen()?

$length = strlen($title); 
if($length >= 1 and $length <=20) 
     echo "VALID"; 
else 
     echo "Invalid"; 

[EDIT]: Проверка ли aplhanumeric или puctuation:

И если вы хотите, чтобы проверить, содержит ли строка любые непечатаемые символы, которые могут вызвать проблемы, просто использовать ctype_graph()

if(ctype_graph ($title)) 
     echo "Only alphanumeric or punctuation"; 
else 
     echo "Invalid non-printable characters found"; 

[РЕДАКТИРОВАТЬ 2]:

Если вы хотите пространства   быть подтверждено, просто используйте:

if(ctype_graph(str_replace(' ', '',$title)) 
+0

Кажется, что OP хочет разрешить пробелы, которые 'ctype_graph()' не разрешает. – Amber

+0

@Amber, код обновлен. – shamittomar

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