我使用了以下代码,但它返回false但它应该返回true
string check,zipcode;
zipcode="10001 New York, NY";
check=isalphanumeric(zipcode)
public static Boolean isAlphaNumeric(string strToCheck)
{
Regex rg = new Regex("[^a-zA-Z0-9]");
//if has non AlpahNumeric char, return false, else return true.
return rg.IsMatch(strToCheck) == true ? false : true;
}
答案 0 :(得分:48)
试试这个:
public static Boolean isAlphaNumeric(string strToCheck)
{
Regex rg = new Regex(@"^[a-zA-Z0-9\s,]*$");
return rg.IsMatch(strToCheck);
}
如果你在正则表达式中指定,你的字符串应该包含什么,而不是它不能包含的内容,那就更难以理解了。
在上面的示例中:
答案 1 :(得分:30)
public static bool IsAlphaNumeric(string strToCheck)
{
return strToCheck.All(char.IsLetterOrDigit);
}
答案 2 :(得分:5)
10001 New York, NY
包含逗号和空格 - 而不是字母数字
您需要调整表达式以允许使用逗号和空格。
此外,您可能希望重命名该函数,以便其他开发人员明白它更像是一个验证器而不是isAlphaNumeric()函数。
答案 3 :(得分:2)
如果要检查非正则ASCII A-z 0-9
,则不能使用char.IsLetterOrDigit()
,因为它包括其他Unicode字符。
您可以做的是检查字符代码范围。
以下内容比较冗长,但这是为了易于理解,而不是为了打高尔夫。
public static bool IsAsciiAlphaNumeric(this string str)
{
if (string.IsNullOrEmpty(str))
{
return false;
}
for (int i = 0; i < str.Length; i++)
{
if (str[i] < 48) // Numeric are 48 -> 57
{
return false;
}
if (str[i] > 57 && str[i] < 65) // Capitals are 65 -> 90
{
return false;
}
if (str[i] > 90 && str[i] < 97) // Lowers are 97 -> 122
{
return false;
}
if (str[i] > 122)
{
return false;
}
}
return true;
}
答案 4 :(得分:1)
当^在[]中时,它表示除了这些字符之外的所有内容。
答案 5 :(得分:1)
我需要一种方法来查看字符串是否包含任何Alpha数字,而不使用正则表达式...
public static bool ContainsAlphaNumeric(string strToCheck)
{
foreach(char c in strToCheck)
{
if (char.IsLetterOrDigit(c))
{
return true;
}
}
return false;
}
答案 6 :(得分:0)
tring check,zipcode;
zipcode="10001 New York, NY";
check=isalphanumeric(zipcode)
public static Boolean isAlphaNumeric(string strToCheck)
{
Regex rg = new Regex("[^a-zA-Z0-9]");
//if has non AlpahNumeric char, return false, else return true.
return rg.IsMatch(strToCheck) == true ? false : true;
}
此代码返回始终为false,因为符号^表示此字符串不包含任何字母数字字符,您需要删除此^
答案 7 :(得分:0)
回到我的perl时代,我会使用这个正则表达式:
\ W +
表示一个或多个单词字符。单词字符基本上是a-zA-Z0-9,基本上不关心标点符号或空格。所以如果你只是想确保字符串中有一些值,这就是我在C#中使用的内容:
public static Boolean isAlphaNumeric(string strToCheck)
{
Regex rg = new Regex(@"\w+");
return rg.IsMatch(strToCheck);
}
感谢Chopikadze的基本结构。
我认为这个会更快,因为它不会检查整个字符串,而是停留在单词字符的第一个实例并返回true。