буквенно-цифровое регулярное выражение на подстроке - PullRequest
0 голосов
/ 02 февраля 2012

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

Что я хочу сделать:

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

 if (Regex.IsMatch(STRINGTOCHECK.ToLower().Substring(16), @"^[a-zA-Z0-9]*$"))

request

некоторый код, показывающий мне верный способ выполнить это

или указывающийгде мой код неверен

и т. д.

Вся помощь приветствуется!

Ответы [ 2 ]

4 голосов
/ 02 февраля 2012

Вам необходимо убедиться, что последние 16 символов являются буквенно-цифровыми? Просто используйте это регулярное выражение:

[a-zA-Z0-9]{16}$

Проблема, с которой вы столкнулись сейчас, заключается в том, что .Substring(16) вернет все символы в строке после и включая позицию 16 - , а не последние 16 символов. Более того, вы уже нечувствительны к регистру, поэтому:

if(Regex.IsMatch(STRINGTOCHECK, @"[a-zA-Z0-9]{16}$"))

Последний якорь $ проверяет соответствие последних 16 символов.

1 голос
/ 02 февраля 2012

Параметр Substring - это индекс, с которого start .

Итак, чтобы получить подстроку из last 16 символов, вам необходимовычтите 16 из длины строки.

string last16 = STRINGTOCHECK.Substring(STRINGTOCHECK.Length - 16);
if(Regex.IsMatch(last16, @"^[a-zA-Z0-9]*$")
{

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...