2012-02-02 19 views
0

ここでは正規表現と部分文字列がよくある質問ですが、私が実際に使用しているものとは関連していないようです。私は何をしたいか部分文字列の英数字正規表現

は、文字列を取る文字列の最後の16個の文字を見て、その英数字を確認してください。以下は私が思いついたものです。

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

要求

私にこの

またはすべてのヘルプは高く評価され、私のコードが間違っているところ

など

を指摘を達成するための正しい方法を示すいくつかのコードを!

+1

'サブストリング(16)は'その時点でサブ_starts_、その遠端から起動しない –

+0

私はいけない場合、それらの前に何が来るのか知っています最後の16文字? – toosweetnitemare

答えて

4

最後の16文字が英数字であることを確認する必要がありますか? ない最後の16の文字 - あなたが今持っている問題は.Substring(16)は後に、文字列内のすべての文字を返し、位置16を含むということです

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

:ちょうどこの正規表現を使用します。しかも、あなたはすでに、大文字と小文字を区別しないなら、そう:

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

最終$アンカーは、最後の16の文字が一致しているを確認します。

+0

ありがとう@minitech!それが私が探していたものです。 – toosweetnitemare

1

Substringのパラメータは、からへのインデックスです。

の部分文字列を最後ににするには、文字列の長さから16を引く必要があります。 (あなたが文字列の長さと幸運を除きます。)

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

} 
+0

それは私が私がする必要があると思っていたものです。それを1行で行うことは可能ですか? – toosweetnitemare

+0

@toosweetnitemare - 確かですが、読みやすさはあまりありません。なぜそれほど意味がない1つの行にしますか? – Oded

+0

私はそれを構築した後、私はこのアプリケーションを管理していないでしょう。コードの "管理人"は、私がそれをコードするように要求しています。 minitechが私にその解決策を与えたように見えます。ご協力ありがとうございました。 – toosweetnitemare

関連する問題