Cha*_*lie 879
要匹配仅包含这些字符(或空字符串)的字符串,请尝试
"^[a-zA-Z0-9_]*$"
Run Code Online (Sandbox Code Playgroud)
这适用于.NET正则表达式,也可能适用于许多其他语言.
打破它:
^ : start of string
[ : beginning of character group
a-z : any lowercase letter
A-Z : any uppercase letter
0-9 : any digit
_ : underscore
] : end of character group
* : zero or more of the given characters
$ : end of string
Run Code Online (Sandbox Code Playgroud)
如果您不想允许空字符串,请使用+而不是*.
编辑正如其他人所指出的,一些正则表达式语言有一个简写形式[a-zA-Z0-9_].在.NET正则表达式语言中,您可以打开ECMAScript行为并\w用作速记(屈服^\w*$或^\w+$).请注意,在其他语言中,默认情况下在.NET中,\w稍微宽泛一些,并且还会匹配其他类型的unicode字符(感谢Jan指出这一点).因此,如果您真的打算只匹配这些字符,那么使用显式(更长)形式可能是最好的.
kch*_*kch 327
这里有很多冗长,我深深反对,所以,我的结论是:
/^\w+$/
Run Code Online (Sandbox Code Playgroud)
\w相当于[A-Za-z0-9_],这几乎是你想要的.(除非我们将unicode引入混音)
使用+量词,您将匹配一个或多个字符.如果您也想接受空字符串,请*改用.
Ant*_*ton 36
您想检查每个字符是否符合您的要求,这就是我们使用的原因:
[A-Za-z0-9_]
Run Code Online (Sandbox Code Playgroud)
你甚至可以使用速记版本:
\w
Run Code Online (Sandbox Code Playgroud)
这是等效的(在某些正则表达式中,所以请确保在使用之前进行检查).然后,为了表明整个字符串必须匹配,您使用:
^
Run Code Online (Sandbox Code Playgroud)
要指示字符串必须以该字符开头,请使用
$
Run Code Online (Sandbox Code Playgroud)
指示字符串必须以该字符结尾.然后用
\w+ or \w*
Run Code Online (Sandbox Code Playgroud)
表示"1或更多",或"0或更多".总而言之,我们有:
^\w*$
Run Code Online (Sandbox Code Playgroud)
Ben*_*ter 28
嗯......问题:是否需要至少有一个角色?它可以是一个空字符串吗?
^[A-Za-z0-9_]+$
Run Code Online (Sandbox Code Playgroud)
将做至少一个大写或小写字母数字或下划线.如果它可以是零长度,那么只需用+代替*
^[A-Za-z0-9_]*$
Run Code Online (Sandbox Code Playgroud)
编辑:
如果需要包含变音符号(例如cedilla - ç),那么你需要使用与上面相同的单词character,但包括变音字符:
^\w+$
Run Code Online (Sandbox Code Playgroud)
要么
^\w*$
Run Code Online (Sandbox Code Playgroud)
Day*_*ury 26
虽然它比起来更冗长\w,但我个人非常欣赏完整POSIX字符类名称的可读性(http://www.zytrax.com/tech/web/regex.htm#special),所以我会说:
^[[:alnum:]_]+$
Run Code Online (Sandbox Code Playgroud)
但是,虽然上述链接的文档说" \w将匹配范围0 - 9,A - Z和a - z(相当于POSIX [:alnum:])"中的任何字符,但我没有发现这是真的.grep -P反正不是.如果使用[:alnum:],则需要明确包含下划线,但如果使用则不需要\w.简短而甜蜜的你无法击败以下内容:
^\w+$
Run Code Online (Sandbox Code Playgroud)
除了可读性之外,使用POSIX字符类(http://www.regular-expressions.info/posixbrackets.html)意味着你的正则表达式可以处理非ASCII字符串,基于范围的正则表达式不会因为它们依赖ASCII字符的基础排序可能与其他字符集不同,因此会排除您可能想要捕获的一些非ASCII字符(字母,如œ).
Dan*_*eal 21
在计算机科学中,字母数字值通常表示第一个字符不是数字,而是字母或下划线.此后,字符可以是0-9,A-Z,a-z,或下划线(_).
以下是您将如何做到这一点:
在php下测试:
$regex = '/^[A-Za-z_][A-Za-z\d_]*$/'
Run Code Online (Sandbox Code Playgroud)
或者拿这个
^[A-Za-z_][A-Za-z\d_]*$
Run Code Online (Sandbox Code Playgroud)
并将其放在您的开发语言中.
Dre*_*all 16
怎么样:
^([A-Za-z]|[0-9]|_)+$
Run Code Online (Sandbox Code Playgroud)
...如果你想要明确,或者:
^\w+$
Run Code Online (Sandbox Code Playgroud)
...如果您更喜欢简洁(Perl语法).
小智 12
使用前瞻来做"至少一个"的东西.相信我,这更容易.
这是一个需要1-10个字符的示例,包含至少一个数字和一个字母:
^(?=.*\d)(?=.*[A-Za-z])[A-Za-z0-9]{1,10}$
Run Code Online (Sandbox Code Playgroud)
注意:本来可以使用\ w但是ECMA/Unicode考虑因素会起作用,增加\ w"单词字符"的字符覆盖率.
Sha*_*anu 10
试试我为字符串做的这些多语言扩展.
IsAlphaNumeric - 字符串必须包含至少1个alpha(Unicode范围内的字母,在charSet中指定)和至少1个数字(在numSet中指定).此外,字符串应仅包含字母和数字.
IsAlpha - String应包含至少1个alpha(在指定的语言charSet中)并且仅包含alpha.
IsNumeric - 字符串应包含至少1个数字(使用指定的语言numSet)并且仅包含数字.
可以指定所需语言的charSet/numSet范围.Unicode范围可在以下链接中找到:
http://www.ssec.wisc.edu/~tomw/java/unicode.html
API:
public static bool IsAlphaNumeric(this string stringToTest)
{
//English
const string charSet = "a-zA-Z";
const string numSet = @"0-9";
//Greek
//const string charSet = @"\u0388-\u03EF";
//const string numSet = @"0-9";
//Bengali
//const string charSet = @"\u0985-\u09E3";
//const string numSet = @"\u09E6-\u09EF";
//Hindi
//const string charSet = @"\u0905-\u0963";
//const string numSet = @"\u0966-\u096F";
return Regex.Match(stringToTest, @"^(?=[" + numSet + @"]*?[" + charSet + @"]+)(?=[" + charSet + @"]*?[" + numSet + @"]+)[" + charSet + numSet +@"]+$").Success;
}
public static bool IsNumeric(this string stringToTest)
{
//English
const string numSet = @"0-9";
//Hindi
//const string numSet = @"\u0966-\u096F";
return Regex.Match(stringToTest, @"^[" + numSet + @"]+$").Success;
}
public static bool IsAlpha(this string stringToTest)
{
//English
const string charSet = "a-zA-Z";
return Regex.Match(stringToTest, @"^[" + charSet + @"]+$").Success;
}
Run Code Online (Sandbox Code Playgroud)
用法:
//English
string test = "AASD121asf";
//Greek
//string test = "???123";
//Bengali
//string test = "????";
//Hindi
//string test = @"??????";
bool isAlphaNum = test.IsAlphaNumeric();
Run Code Online (Sandbox Code Playgroud)
MiK*_*r13 10
这对我有用,在 O'Reilly 的“掌握正则表达式”中找到了这个:
/^\w+$/
Run Code Online (Sandbox Code Playgroud)
解释:
验证自己:
以下正则表达式匹配字母数字字符和下划线:
^[a-zA-Z0-9_]+$
Run Code Online (Sandbox Code Playgroud)
例如,在Perl中:
#!/usr/bin/perl -w
my $arg1 = $ARGV[0];
# check that the string contains *only* one or more alphanumeric chars or underscores
if ($arg1 !~ /^[a-zA-Z0-9_]+$/) {
print "Failed.\n";
} else {
print "Success.\n";
}
Run Code Online (Sandbox Code Playgroud)
这应该适用于大多数情况。
/^[\d]*[a-z_][a-z\d_]*$/gi
我的意思是,
abcd True
abcd12 True
ab12cd True
12abcd True
1234 False
Run Code Online (Sandbox Code Playgroud)
^ ... $ - 匹配开始和结束的模式[\d]* - 匹配零个或多个数字[a-z_] - 匹配字母或下划线[a-z\d_]* - 匹配字母或数字或下划线/gi - 跨字符串全局匹配且不区分大小写对于那些寻找 unicode 字母数字匹配的人,您可能需要执行以下操作:
^[\p{L} \p{Nd}_]+$
Run Code Online (Sandbox Code Playgroud)
进一步阅读请参阅Unicode 正则表达式(Unicode Consortium)和Unicode 正则表达式(Regular-Expressions.info)。