关于正则表达式:字母数字和下划线的正则表达式

Regular Expression for alphanumeric and underscores

我希望有一个正则表达式来检查字符串是否只包含大小写字母、数字和下划线。


匹配的字符串,只包含那些人物(或空字符串),尝试

1
"^[a-zA-Z0-9_]*$"

本作品为.NET正则表达式,可能很多其他语言的精髓。

破掉它。

1
2
3
4
5
6
7
8
9
^ : 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

如果你不想允许空字符串使用+"*。

为他人编辑出有一些尖锐的语言,正则表达式有一个形状的[a-zA-Z0-9_]速记。在。NET语言的正则表达式,你可以打开和使用的\wECMAScript的行为作为一个速记(英文)^\w*$^\w+$)。注意,在其他语言中,默认的是在更广泛的网络,\w想匹配,和其他字符(Unicode为好:(1)由于指向本出)。所以如果你真的intending只读那些匹配的字符,显示的形式(15)使用的是最好的。


有一个冗长的很多在这里,和我对它的深,所以,我的回答是:conclusive

1
/^\w+$/

\w是等效到[a-zA-Z0-9_]相当多,这是你想要的。(除非我们介绍Unicode到混音)

你会使用+量词匹配一个或更多的字符。如果你想接受到太空字符串,而不是使用*


你要检查,每个字符匹配您的需求,这就是为什么我们使用:

1
[A-Za-z0-9_]

你甚至可以使用速记版本:

1
\w

这是等价的(在一些正则表达式的香料,所以确保你检查之前,你使用它)。然后,一个显示整个字符串,你必须匹配,使用:

1
^

一个显示字符的字符串必须使用启动吗。

1
$

一个字符串表示的字符必须结束吗。然后使用

1
\w+ or \w*

来表示"1"或"0",更多的"更多"。把它所有的一起,我们有:

1
^\w*$


虽然它比\w更冗长,但我个人还是很欣赏完整的posix字符类名的可读性(http://www.zytrax.com/tech/web/regex.htm special),所以我想说:

1
^[[:alnum:]_]+$

然而,尽管上述链接中的文档指出,\w将"匹配0-9、a-z和a-z(相当于posix[:alnum:])范围内的任何字符",但我没有发现这是真的。不管怎么说,不是和grep -P一起。如果使用[:alnum:],则需要显式包含下划线,但如果使用\w,则不需要。你不能简单地击败以下几点:

1
^\w+$

除了可读性之外,使用posix字符类(http://www.regular-expressions.info/posixbrackets.html)意味着您的regex可以处理非ascii字符串,而基于范围的regex则不能这样做,因为它们依赖于ascii字符的底层顺序,这可能与其他字符集不同,因此将排除您可能需要捕获一些非ASCII字符(如&339;)。


为了...question:是需要有至少一个字符或没有?它可以在空的字符串?

1
^[A-Za-z0-9_]+$

要做至少一上或alphanumeric或下划线的小写。如果它可以零长度,然后只是一个替代品* +

1
^[A-Za-z0-9_]*$

编辑:

如果需要包含变音符号(如cedilla和# 231;)然后你会需要使用Word字符是不一样的。在上面的,但diacritic人物包括:

1
^\w+$

1
^\w*$


在计算机科学中,字母数字值通常意味着第一个字符不是数字,而是字母或下划线。此后,字符可以是0-9A-ZA-Z或下划线(_)。

您可以这样做:

在php下测试:

1
$regex = '/^[A-Za-z_][A-Za-z\d_]*$/'

还是拿这个

1
^[A-Za-z_][A-Za-z\d_]*$

并将其放在开发语言中。


如何:

1
^([A-Za-z]|[0-9]|_)+$

如果你想显,或:

1
^\w+$

如果你喜欢简明(Perl的语法)。


使用lookaheads做"至少一个"的东西。信托我它是多容易。

这里是一个例子,包括在1 10的字符,数字和一个含至少一个字母:

1
^(?=.*\d)(?=.*[A-Za-z])[A-Za-z0-9]{1,10}$

注:没有使用的W然后ECMA / Unicode字符考虑到即插即用来增加覆盖"W"Word字符"。


试试我为字符串做的这些多语言扩展。

isalphanumeric-字符串必须至少包含1个字母(Unicode范围内的字母,用字符集指定)和1个数字(用numset指定)。此外,字符串应该只包含字母和数字。

isalpha-字符串应至少包含1个alpha(以指定的语言字符集表示),并且只包含alpha。

isnumeric-字符串应至少包含1个数字(使用指定的语言numset),并且只包含数字。

可以指定所需语言的charset/numset范围。Unicode范围在以下链接上可用:

http://wwwss.WISC.EDU/~ TMW/Java/UnoDe.HTML

应用程序编程接口:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
    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;
    }

用途:

1
2
3
4
5
6
7
8
9
10
11
12
13
        //English
        string test ="AASD121asf";

        //Greek
        //string test ="??β123";

        //Bengali
        //string test ="????";

        //Hindi
        //string test = @"??????";

        bool isAlphaNum = test.IsAlphaNumeric();


下面的正则表达式匹配alphanumeric字符和下划线:

1
^[A-Za-z0-9_]+$

例如,在Perl中:

1
2
3
4
5
6
7
8
9
10
11
12
#!/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.
";
} else {
    print"Success.
";
}


我有问题,我想在区分数字和数字之间的α,α,从而确保在alphanumeric字符串包含至少一个数字和至少一个alpha,i用:

1
^([a-zA-Z_]{1,}\d{1,})+|(\d{1,}[a-zA-Z_]{1,})+$


对于那些寻找Unicode字母数字匹配的用户,您可能需要执行以下操作:

1
^[\p{L} \p{Nd}_]+$

进一步阅读http://unicode.org/reports/tr18/及AThttp://www.regular-expressions.info/unicode.html


这里是你想要的正则表达式的一个量词指定至少1字符和不超过255个字符

[(a-za-z0-9 1255 _ ] { }


A匹配正则表达式符号打开整个CAN(蠕虫,特别当考虑到以Unicode编码。你可能会想读的,特别是关于POSIX locale。


我相信你不会在比赛中使用拉丁和Unicode字符。例如,如果需要使用"?"或者"_"字符,"w"的使用将不起作用。

您也可以使用以下方法:

1
^[A-Zà-Ya-zà-y0-9_]+$

希望它有帮助!


检查整个字符串不允许空字符串,try

1
^[A-Za-z0-9_]+$


这对我有效,你可以试试


^ W*美元适用于以下组合一一百二十三1AV赞成的意见AV1