字符串上的字母数字正则表达式
我知道正则表达式和子字符串是这里的常见问题,但我似乎无法将我正在阅读的内容与实际应用程序关联起来。字符串上的字母数字正则表达式
我想要做什么:
一个字符串,看字符串的最后16个字符,并确保它的字母数字。以下是我所想到的。
if (Regex.IsMatch(STRINGTOCHECK.ToLower().Substring(16), @"^[a-zA-Z0-9]*$"))
要求
显示我的正确途径一些代码来完成这个
或指出其中我的代码是错误的
等
所有帮助表示赞赏!
您需要确保最后16个字符是字母数字?只需使用正则表达式:
[a-zA-Z0-9]{16}$
你现在的问题是,.Substring(16)
会后返回字符串中的所有字符,其中包括16位 - 不最后的16个字符。更重要的是,你已经不区分大小写的,所以:
if(Regex.IsMatch(STRINGTOCHECK, @"[a-zA-Z0-9]{16}$"))
最后$
锚确保最后的16个字符被匹配。
感谢@minitech!这就是我一直在寻找的东西。 – toosweetnitemare 2012-02-02 19:44:21
参数Substring
是从开始的索引。
所以,要得到一个子字符串最后 16个字符,您需要从字符串长度中减去16。
string last16 = STRINGTOCHECK.Substring(STRINGTOCHECK.Length - 16);
if(Regex.IsMatch(last16, @"^[a-zA-Z0-9]*$")
{
}
这就是我想我需要做的事情。有可能在一行中做到这一点? – toosweetnitemare 2012-02-02 19:39:54
@toosweetnitemare - 当然,但你有很多可读性。为什么在一条线上表现得不那么合理? – Oded 2012-02-02 19:40:50
我不会在构建它之后管理这个应用程序。代码的“经理”已经要求我这样编码。看起来像minitech给了我这个解决方案。感谢您的帮助。 – toosweetnitemare 2012-02-02 19:43:57
'子串(16)'_starts_在该点串,它不会从月底开始,远远的(除非你是幸运的字符串长度。) – 2012-02-02 19:38:17
如果我不知道那些之前会发生什么最后16个字符? – toosweetnitemare 2012-02-02 19:39:08