Регулярное выражение для буквенно-цифровых символов и подчеркивания

518
задан 3 December 2008 в 04:25
поделиться

10 ответов

Для соответствия строке, которая содержит [только 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], те символы, с помощью явной (более длинной) формы являются, вероятно, лучшими.

843
ответ дан Charlie 3 December 2008 в 04:25
поделиться

Вот regex для того, что Вы хотите с квантором определить по крайней мере 1 символ и не больше, чем 255 символов

[^a-zA-Z0-9 _] {1,255}

1
ответ дан mson 3 December 2008 в 04:25
поделиться

Чтобы проверить всю строку и не позволить пустые строки, попробуйте

^[A-Za-z0-9_]+$
0
ответ дан David Norman 3 December 2008 в 04:25
поделиться

Как насчет:

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

..., если Вы хотите быть явными, или:

^\w+$

..., если Вы предпочитаете краткий (синтаксис Perl).

13
ответ дан Drew Hall 3 December 2008 в 04:25
поделиться

Следующий 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";
}
8
ответ дан Jay 3 December 2008 в 04:25
поделиться

Существует много многословия в здесь, и я глубоко против него, таким образом, мой окончательный ответ был бы:

/^\w+$/

\w эквивалентно [A-Za-z0-9_], который является в значительной степени, что Вы хотите. (если мы не представим unicode соединению)

Используя + квантор, Вы будете соответствовать одному или нескольким символам. Если Вы хотите принять пустую строку также, используйте * вместо этого.

306
ответ дан kch 3 December 2008 в 04:25
поделиться

Гм... вопрос: это должно иметь по крайней мере один символ или нет? Это может быть пустая строка?

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

сделает по крайней мере один верхний регистр или алфавитно-цифровой нижний регистр или подчеркивание. Если это может быть нулевая длина, то просто занимают место + *

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

Редактирование:

, Если диакритические знаки должны быть включены (такие как седиль - ç) тогда необходимо было бы использовать словесный символ, который делает то же как вышеупомянутое, но включает диакритические символы:

^\w+$

Или

^\w*$
25
ответ дан BenAlabaster 3 December 2008 в 04:25
поделиться

Вы хотите проверить, что каждый символ соответствует Вашим требованиям, который является, почему мы используем:

[A-Za-z0-9_]

И можно даже использовать версию стенографии:

\w

, Который эквивалентен (в некоторых regex разновидностях, поэтому удостоверьтесь, что Вы проверяете перед использованием его). Затем, чтобы указать, что вся строка должна соответствовать, Вы используете:

^

Для указания на строку должен запуститься с того символа, затем использовать

$

, Чтобы указать, что строка должна закончиться тем символом. Тогда используйте

\w+ or \w*

Для указания "1 или более", или "0 или больше". Соединяя все это, мы имеем:

^\w*$
35
ответ дан Anton 3 December 2008 в 04:25
поделиться

сопоставление диакритических знаков в регулярном выражении открывает целую банку червей, особенно если принять во внимание Unicode. Возможно, вам захочется, в частности, прочитать о локали Posix.

1
ответ дан 28 July 2019 в 07:52
поделиться

Для меня была проблема в том, что я хочу различать буквенный, числовой и буквенно-цифровой, поэтому, чтобы буквенно-цифровая строка содержала хотя бы одну букву и хотя бы одну цифру, я использовал:

^([a-zA-Z_]{1,}\d{1,})+|(\d{1,}[a-zA-Z_]{1,})+$
4
ответ дан 22 November 2019 в 22:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: