是否有一个正则表达式可以检查字符串是否仅包含大写和小写字母、数字和下划线?
是否有一个正则表达式可以检查字符串是否仅包含大写和小写字母、数字和下划线?
^[a-zA-Z0-9_]+$
#!/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";
}
这应该在大多数情况下有效。
/^[\d]*[a-z_][a-z\d_]*$/gi
而且我是指,
abcd True
abcd12 True
ab12cd True
12abcd True
1234 False
^ ... $
- 匹配以...开头和结尾的模式[\d]*
- 匹配零个或多个数字[a-z_]
- 匹配字母或下划线[a-z\d_]*
- 匹配字母、数字或下划线/gi
- 全局匹配字符串,不区分大小写如果您正在寻找Unicode字母数字匹配,您可能需要执行以下操作:
^[\p{L} \p{Nd}_]+$
[^a-zA-Z0-9 _]{1,255}
对于我而言,有一个问题是我想区分字母、数字和字母数字混合的字符串。为了确保一个字母数字混合的字符串至少包含一个字母和一个数字,我使用了以下代码:
^([a-zA-Z_]{1,}\d{1,})+|(\d{1,}[a-zA-Z_]{1,})+$
我相信您的匹配中没有考虑到拉丁文和Unicode字符。
例如,如果您需要使用“ã”或“ü”字符,则使用“\w”将无法起作用。
您可以选择使用以下方法:
^[A-ZÀ-Ýa-zà-ý0-9_]+$
^\w*$
可以用于以下组合:
1
123
1av
pRo
av1
对于Java,只允许大小写不敏感的字母数字和下划线。
^ Matches the string starting with any characters
[a-zA-Z0-9_]+ Matches alpha-numeric character and underscore.
$ Matches the string ending with zero or more characters.
public class RegExTest {
public static void main(String[] args) {
System.out.println("_C#".matches("^[a-zA-Z0-9_]+$"));
}
}
[\\p{Alnum}_]
为了检查整个字符串并且不允许空字符串,请尝试
^[A-Za-z0-9_]+$