是否有正则表达式检查字符串是否只包含大写字母、小写字母、数字和下划线?


当前回答

我相信您在匹配中没有使用拉丁字符和Unicode字符。

例如,如果需要使用“ã”或“ü”字符,则使用“\w”将不起作用。

你也可以使用这种方法:

^[A-ZÀ-Ýa-zà-ý0-9_]+$

其他回答

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

isalphannumeric—字符串必须包含至少一个alpha(在Unicode范围内的字母,在charSet中指定)和至少一个数字(在numSet中指定)。同样,字符串应该只包含alpha和数字。

IsAlpha -字符串应该包含至少一个alpha(在指定的语言字符集中),并且只由alpha组成。

IsNumeric -字符串应该至少包含一个数字(使用指定的语言numSet),并且仅由数字组成。

可以指定所需语言的charSet/numSet范围。Unicode范围可在Unicode图表。

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;
}

用法:

// English
string test = "AASD121asf";

// Greek
//string test = "Ϡϛβ123";

// Bengali
//string test = "শর৩৮";

// Hindi
//string test = @"क़लम३७ख़";

bool isAlphaNum = test.IsAlphaNumeric();

^\w*$将适用于以下组合:

1
123
1av
pRo
av1

Use

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

...如果你想要明确,或者:

^\w+$

...如果您更喜欢简洁(Perl语法)。

你想要检查每个字符是否符合你的要求,这就是为什么我们使用:

[A-Za-z0-9_]

你甚至可以用简写的形式:

\w

这是等价的(在某些正则表达式中,所以在使用它之前一定要检查一下)。然后,为了表明整个字符串必须匹配,您使用:

^

若要指示字符串必须以该字符开头,则使用

$

若要指示字符串必须以该字符结束。然后使用

\w+ or \w*

表示“1或多个”,或“0或多个”。综上所述,我们有:

^\w*$

我相信您在匹配中没有使用拉丁字符和Unicode字符。

例如,如果需要使用“ã”或“ü”字符,则使用“\w”将不起作用。

你也可以使用这种方法:

^[A-ZÀ-Ýa-zà-ý0-9_]+$