2012-01-19 4 views
1

Мне нужно регулярное выражение, чтобы увидеть, если $ вход содержал только буквенные символы или пробелы также нужен, чтобы проверить, если $ numInput содержала только числовые символы или пробелы и один комбинированные так:PHP регулярное выражение CType

$alphabeticOnly = 'abcd adb'; 
$numericOnly = '1234 567'; 
$alphabeticNumeric = 'abcd 3232'; 

Таким образом, во всех приведенных выше примерах буквенные, числовые, пробельные символы допускаются ТОЛЬКО НЕТ.

Как я могу получить эти 3 различных регулярных выражения?

+0

См. Также [Открыть так urce RegexBuddy alternatives] (http://stackoverflow.com/questions/89718/is-there) и [Online regex testing] (http://stackoverflow.com/questions/32282/regex-testing) для некоторых полезных инструментов или [RegExp.info] (http://regular-expressions.info/) для лучшего учебника. – mario

ответ

2

Это должно помочь вам

if (!preg_match('/^[\sa-zA-Z]+$/', $alphabeticOnly){ 
    die('alpha match fail!'); 
} 

if (!preg_match('/^[\s0-9]+$/', $numericOnly){ 
    die('numeric match fail!'); 
} 

if (!preg_match('/^[\sa-zA-Z0-9]+$/', $alphabeticNumeric){ 
    die('alphanumeric match fail!'); 
} 
2

Это довольно простой

/^[a-z\s]+$/i - letter and spaces 
/^[\d\s]+$/ - number and spaces 
/^[a-z\d\s]+$/i - letter, number and spaces 

Просто используйте их в preg_match()

1

Для того, чтобы быть юникода совместимы, вы должны использовать:

/^[\pL\s]+$/  // Letters or spaces 
/^[\pN\s]+$/  // Numbers or spaces 
/^[\pL\pN\s]+$/ // Letters, numbers or spaces 
+0

Что вы подразумеваете под Unicode? – randomKek

+0

@MikeVercoelen: для соответствия другим символам, отличным от ASCII, например, 'ç ñ é è â'. Взгляните на http://unicode.org/reports/tr18/ – Toto

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