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


当前回答

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

^[a-zA-Z0-9_]+$

例如,在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";
}

其他回答

Use

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

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

^\w+$

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

对于Java,只允许不区分大小写的字母数字和下划线。

^匹配以任何字符开头的字符串 [a-zA-Z0-9_]+匹配字母数字字符和下划线。 $匹配以0或多个字符结尾的字符串。 公共类RegExTest { public static void main(String[] args) { System.out.println(“_C #”.matches (" ^ [a-zA-Z0-9_] + $ ")); } }

要检查整个字符串并且不允许空字符串,请尝试

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

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

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

你也可以使用这种方法:

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

这对我很有用。你可以试试:

[\\p{Alnum}_]