Проверьте имя пользователя как алфавитно-цифровое с подчеркиваниями

Необходимо создать заголовочный файл как

// 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).

35
задан 25 August 2009 в 20:14
поделиться

4 ответа

Фактические совпадающие символы \ w зависят от используемого языкового стандарта :

Символ «слово» - это любая буква или цифра или символ подчеркивания, то есть любой символ, который может быть частью Perl " word ". Определение букв и цифр контролируется символьными таблицами PCRE и может варьироваться, если имеет место соответствие для конкретной локали. Например, в языковом стандарте "fr" (французский) некоторые коды символов больше 128 используются для букв с диакритическими знаками, и они соответствуют \ w.

Поэтому вам лучше явно указать, какие символы вы хотите разрешить:

/^[A-Za-z0-9_]+$/

Это позволяет использовать только буквенно-цифровые символы и подчеркивание.

И если вы хотите разрешить подчеркивание только как символ конкатенации и хотите, чтобы имя пользователя начиналось с символа алфавита:

/^[A-Za-z][A-Za-z0-9]*(?:_[A-Za-z0-9]+)*$/
69
ответ дан 27 November 2019 в 06:34
поделиться

попробуйте

function validate_alphanumeric_underscore($str) 
{
    return preg_match('/^[a-zA-Z0-9_]+$/',$str);
}
10
ответ дан 27 November 2019 в 06:34
поделиться

Мне нравится. Обратите внимание, что вы не предъявляете никаких требований к размещению подчеркивания, поэтому «username_» и «___username» пройдут оба.

3
ответ дан 27 November 2019 в 06:34
поделиться

Ваше собственное решение совершенно нормально.

preg_match использует регулярные выражения, подобные Perl, в которых класс символов \ w определен так, чтобы точно соответствовать вашему need:

\ w - Соответствует символу «слово» (буквенно-цифровой плюс «_»)

( источник )

0
ответ дан 27 November 2019 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: