Необходимо создать заголовочный файл как
// Constants.h
FOUNDATION_EXPORT NSString *const MyFirstConstant;
FOUNDATION_EXPORT NSString *const MySecondConstant;
//etc.
(можно использовать extern
вместо FOUNDATION_EXPORT
, если код не будет использоваться в смешанных средах C/C++ или на других платформах)
, можно включать этот файл в каждый файл, который использует константы или в предварительно скомпилированный заголовок для проекта.
Вы определяете эти константы в.m файле как [1 110]
// Constants.m
NSString *const MyFirstConstant = @"FirstConstant";
NSString *const MySecondConstant = @"SecondConstant";
, Constants.m должен быть добавлен к Вашей цели приложения/платформы так, чтобы это было связано в с конечным продуктом.
преимущество использования строковых констант вместо #define
'd константы состоит в том, что можно протестировать на равенство с помощью сравнения указателя (stringInstance == MyFirstConstant
), который намного быстрее, чем сравнение строк ([stringInstance isEqualToString:MyFirstConstant]
) (и легче читать, IMO).
Фактические совпадающие символы \ w
зависят от используемого языкового стандарта :
Символ «слово» - это любая буква или цифра или символ подчеркивания, то есть любой символ, который может быть частью Perl " word ". Определение букв и цифр контролируется символьными таблицами PCRE и может варьироваться, если имеет место соответствие для конкретной локали. Например, в языковом стандарте "fr" (французский) некоторые коды символов больше 128 используются для букв с диакритическими знаками, и они соответствуют \ w.
Поэтому вам лучше явно указать, какие символы вы хотите разрешить:
/^[A-Za-z0-9_]+$/
Это позволяет использовать только буквенно-цифровые символы и подчеркивание.
И если вы хотите разрешить подчеркивание только как символ конкатенации и хотите, чтобы имя пользователя начиналось с символа алфавита:
/^[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/
попробуйте
function validate_alphanumeric_underscore($str)
{
return preg_match('/^[a-zA-Z0-9_]+$/',$str);
}
Мне нравится. Обратите внимание, что вы не предъявляете никаких требований к размещению подчеркивания, поэтому «username_» и «___username» пройдут оба.
Ваше собственное решение совершенно нормально.
preg_match
использует регулярные выражения, подобные Perl, в которых класс символов \ w
определен так, чтобы точно соответствовать вашему need:
\ w
- Соответствует символу «слово» (буквенно-цифровой плюс «_»)
( источник )