Для соответствия строке, которая содержит [только 117] те символы (или пустая строка) попробуйте
"^[a-zA-Z0-9_]*$"
, Это работает на регулярные выражения.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
, Если Вы не хотите позволять пустые строки, используйте + вместо *.
РЕДАКТИРОВАНИЕ Как другие указало, некоторые regex языки имеют форму стенографии для [a-zA-Z0-9_]
. В.NET regex язык, можно включить поведение ECMAScript и использование \w
как стенография (уступающий ^\w*$
или ^\w+$
). Обратите внимание, что на других языках, и по умолчанию в.NET, \w
несколько более широко, и будет соответствовать другим видам unicode символов также (благодаря Jan для указания на это). Таким образом, если Вы действительно намереваетесь соответствовать [только 1 114], те символы, с помощью явной (более длинной) формы являются, вероятно, лучшими.
Вот regex для того, что Вы хотите с квантором определить по крайней мере 1 символ и не больше, чем 255 символов
[^a-zA-Z0-9 _] {1,255}
Чтобы проверить всю строку и не позволить пустые строки, попробуйте
^[A-Za-z0-9_]+$
Как насчет:
^([A-Za-z]|[0-9]|_)+$
..., если Вы хотите быть явными, или:
^\w+$
..., если Вы предпочитаете краткий (синтаксис Perl).
Следующий regex соответствует алфавитно-цифровым символам и подчеркиванию:
^[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";
}
Существует много многословия в здесь, и я глубоко против него, таким образом, мой окончательный ответ был бы:
/^\w+$/
\w
эквивалентно [A-Za-z0-9_]
, который является в значительной степени, что Вы хотите. (если мы не представим unicode соединению)
Используя +
квантор, Вы будете соответствовать одному или нескольким символам. Если Вы хотите принять пустую строку также, используйте *
вместо этого.
Гм... вопрос: это должно иметь по крайней мере один символ или нет? Это может быть пустая строка?
^[A-Za-z0-9_]+$
сделает по крайней мере один верхний регистр или алфавитно-цифровой нижний регистр или подчеркивание. Если это может быть нулевая длина, то просто занимают место + *
^[A-Za-z0-9_]*$
Редактирование:
, Если диакритические знаки должны быть включены (такие как седиль - ç) тогда необходимо было бы использовать словесный символ, который делает то же как вышеупомянутое, но включает диакритические символы:
^\w+$
Или
^\w*$
Вы хотите проверить, что каждый символ соответствует Вашим требованиям, который является, почему мы используем:
[A-Za-z0-9_]
И можно даже использовать версию стенографии:
\w
, Который эквивалентен (в некоторых regex разновидностях, поэтому удостоверьтесь, что Вы проверяете перед использованием его). Затем, чтобы указать, что вся строка должна соответствовать, Вы используете:
^
Для указания на строку должен запуститься с того символа, затем использовать
$
, Чтобы указать, что строка должна закончиться тем символом. Тогда используйте
\w+ or \w*
Для указания "1 или более", или "0 или больше". Соединяя все это, мы имеем:
^\w*$
сопоставление диакритических знаков в регулярном выражении открывает целую банку червей, особенно если принять во внимание Unicode. Возможно, вам захочется, в частности, прочитать о локали Posix.
Для меня была проблема в том, что я хочу различать буквенный, числовой и буквенно-цифровой, поэтому, чтобы буквенно-цифровая строка содержала хотя бы одну букву и хотя бы одну цифру, я использовал:
^([a-zA-Z_]{1,}\d{1,})+|(\d{1,}[a-zA-Z_]{1,})+$