我知道正则表达式和子字符串是一个常见问题,但我似乎无法将我正在阅读的内容与实际应用相关联。
我想做什么:
取一个字符串,查看字符串的最后16个字符,并确保其字母数字。以下是我的想法。
if (Regex.IsMatch(STRINGTOCHECK.ToLower().Substring(16), @"^[a-zA-Z0-9]*$"))
请求
一些代码向我展示了实现此目的的正确方法
或指出我的代码错误
等。
感谢所有帮助!
答案 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]*$")
{
}