2012-02-02 4 views
0

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

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

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

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

запрос

некоторый код показывает мне правильный путь для достижения этой цели

или указав, где мой код неправильно

и т.д.

Вся помощь ценится !

+1

'подстрока (16)' _starts_ подстроки в этой точке, она не запускается, что далека от конца (если не повезет с длиной строки.) –

+0

что, если я не знаю, что происходит перед теми, последние 16 символов? – toosweetnitemare

ответ

4

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

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

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

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

Окончательный $ якорь убеждается последние 16 символов подкрепляются.

+0

спасибо @minitech! вот что я искал. – toosweetnitemare

1

Параметр Substring является индексом, из которого следует начало.

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

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

} 
+0

Это то, что я думал, что мне нужно делать. возможно ли это сделать в одной строке? – toosweetnitemare

+0

@toosweetnitemare - Конечно, но вы теряете удобочитаемость. Почему это на одной линии, которая имеет меньше смысла? – Oded

+0

Я не буду управлять этим приложением после его создания. «Ясли» кода запросил у меня код таким образом. Похоже, minitech дал мне это решение. Спасибо за помощь. – toosweetnitemare

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