C# 字母数字字符串的正则表达式,该字符串中至少有一个字母或至少有一个数字

C# 字母数字字符串的正则表达式,该字符串中至少有一个字母或至少有一个数字,c#,regex,C#,Regex,为了测试一个字母数字字符串,我们通常使用正则表达式“^[a-zA-Z0-9\]*$”(或者最好使用“^\w+$”表示C)。但是这个正则表达式只接受数字字符串或字母字符串,比如“12345678”或“asdfgth” 我需要一个正则表达式,它只接受至少有一个字母表和一个数字的字母数字字符串。也就是说,通过regex“ar56ji”将是正确的字符串之一,而不是前面提到的字符串 提前感谢。这应该可以: "^[a-zA-Z0-9_]*([a-zA-Z][0-9]|[0-9][a-zA-Z])[a-zA-

为了测试一个字母数字字符串,我们通常使用正则表达式
“^[a-zA-Z0-9\]*$”
(或者最好使用
“^\w+$”
表示C)。但是这个正则表达式只接受数字字符串或字母字符串,比如
“12345678”
“asdfgth”

我需要一个正则表达式,它只接受至少有一个字母表和一个数字的字母数字字符串。也就是说,通过regex
“ar56ji”
将是正确的字符串之一,而不是前面提到的字符串

提前感谢。

这应该可以:

"^[a-zA-Z0-9_]*([a-zA-Z][0-9]|[0-9][a-zA-Z])[a-zA-Z0-9_]*$"
这将匹配:

<zero-or-more-stuff>
EITHER <letter-followed-by-digit> OR <digit-followed-by-letter>
<zero-or-more-stuff>

不是…就是…
通过确保您有一个数字后接字母或一个字母后接数字,您实施了至少有一个数字和至少一个字母的要求。请注意,我省略了上面的
,因为不清楚您是否接受它作为字母、数字或两者都不接受。

试试这一个
([a-zA-z]+[0-9][a-zA-Z0-9]*)。([0-9]+[a-zA-z][a-zA-Z0-9]*)$
试试这个:

"^\w*(?=\w*\d)(?=\w*[a-zA-z])\w*$"
这里有一篇关于它的好文章:
简单更好。如果您在最初编写时遇到了困难,那么您(或其他可怜的sap)将很难维护或修改它。(我认为我在上面列出的方法中发现了一些可能的漏洞。)

使用System.Text.regular表达式;
布尔值IsGoodPassword(字符串pwd){
int minPwdLen=8;
int maxPwdLen=12;
布尔allowableChars=false;
布尔值oneLetterOneNumber=false;
布尔值goodLength=false;
字符串allowedCharsPattern=“^[a-z0-9]*$”;
//它是否通过了仅包含允许字符的测试?
allowableChars=Regex.IsMatch(pwd,allowedCharsPattern,RegexOptions.IgnoreCase));
//它是否至少包含一个#和一个字母?
oneLetterOneNumber=Regex.IsMatch(pwd,“[0-9]”)和&Regex.IsMatch(pwd,“[a-z]”,RegularExpressions.IgnoreCase));
//它通过长度要求吗?
goodLength=pwd.Length>=minPwdLength&&pwd.Length这应该可以做到:

if(Regex.IsMatch(subjectString,@)
#匹配一个字母和一个数字的字符串(最小值)。
\一个锚定在绳子的开头。
(?=[^0-9]*[0-9])#至少一个数字和
(?=[^A-Za-z]*[A-Za-z])至少一个字母。
\w+#匹配字母的字符串。
\Z#锚定在绳子的末端。
",
RegexOptions.ignorepattern(空格){
//成功的比赛
}否则{
//匹配尝试失败
} 

<强>编辑2012-0828 < /强>通过改变懒惰点星到特定贪婪的char类来提高查找头的效率。

是否要强制执行某种密码规则?如果是的话,请考虑不要这样做。不,这不是用于任何密码匹配。我需要一个字符串字段,它将唯一标识一个实体。r整个应用程序。因为它是由用户提供的,所以根据客户要求,我认为正则表达式是一个很好的选择。string pwd=“a1111111”//应该通过,但它没有。非常有用和有指导意义+1。感谢您发布它。对于我来说,这是一个非常好的正则表达式。我使用了一些经过修改的版本:
“^=(?=*?[0-9])(?=*[a-Za-z]))[a-zA-Z0-9\]+$”
。实际上我把它当作一个简单的字符串,所以它说,\W是一个“无效的转义序列”。谢谢。ridgerunner:很好。这很好。如何在这个正则表达式中施加长度约束?假设字符串的长度必须正好是8个字符。明白了。
^(?=.[a-Z])(?=.[a-Z])(?=.[0-9])[a-zA Z0-9]{8}$
这将检查至少一个数字、至少一个大写字母和至少一个小写字母。还将检查长度。我不会用它来匹配任何好的密码。您的方法很好,但这需要很长的时间才能回叫服务器,然后在浏览器上给出错误。因此,使用regex和attac很好在silverlight页面中将其添加到控件本身。这将更快,因为它将在客户端进行检查。无论如何,您已经看到,在上面的正则表达式中有哪些漏洞?ridgerunner给出了一个很好的漏洞。谢谢。这个正则表达式也可以工作。但是我认为没有必要添加
\W*
来开始和结束正则表达式。one
\W*
在开始或结束时应该足够了。谢谢。
using System.Text.RegularExpressions;

boolean IsGoodPassword(string pwd){
    int minPwdLen = 8;
    int maxPwdLen = 12;
    boolean allowableChars = false;
    boolean oneLetterOneNumber = false;
    boolean goodLength = false;

    string allowedCharsPattern = "^[a-z0-9]*$";

    //Does it pass the test for containing only allowed chars?
    allowableChars = Regex.IsMatch(pwd, allowedCharsPattern , RegexOptions.IgnoreCase));

    //Does it contain at least one # and one letter?
    oneLetterOneNumber = Regex.IsMatch(pwd, "[0-9]")) && Regex.IsMatch(pwd, "[a-z]", RegularExpressions.IgnoreCase));

    //Does it pass length requirements?
    goodLength = pwd.Length >= minPwdLength && pwd.Length <= maxPwdLength;

    return allowableChars && oneLetterOneNumber && goodLength;
}