子字符串上的字母数字正则表达式

时间:2012-02-02 19:34:55

标签: c# regex string substring

我知道正则表达式和子字符串是一个常见问题,但我似乎无法将我正在阅读的内容与实际应用相关联。

我想做什么:

取一个字符串,查看字符串的最后16个字符,并确保其字母数字。以下是我的想法。

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

请求

一些代码向我展示了实现此目的的正确方法

或指出我的代码错误

等。

感谢所有帮助!

2 个答案:

答案 0 :(得分:4)

您需要确保最后16个字符是字母数字吗?只需使用这个正则表达式:

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

您现在遇到的问题是.Substring(16)将返回字符串中的所有字符,包括位置16 - 不是最后16个字符。更重要的是,你已经不区分大小写,所以:

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

最终的$锚确保最后16个字符匹配。

答案 1 :(得分:1)

Substring的参数是开始的索引。

因此,要获取 last 16个字符的子字符串,您需要从字符串的长度中减去16。

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

}