Как я могу проверить строку с помощью регулярных выражений, чтобы разрешить в ней только буквенно-цифровые символы?
(Я тоже не хочу допускать никаких пробелов).
Используйте следующее выражение:
^[a-zA-Z0-9]*$
то есть:
using System.Text.RegularExpressions;
Regex r = new Regex("^[a-zA-Z0-9]*$");
if (r.IsMatch(SomeString)) {
...
}
В .NET 4.0 вы можете использовать LINQ:
yourText.All
прекратит выполнение и вернет отчетыfalse
в первый раз, так как тогда договор не может быть выполнен.char.IsLetterOrDigit
false
All
Заметка! в этом ответе строго не проверяются буквенно-цифровые символы (обычно это AZ, az и 0-9). Этот ответ позволяет местным персонажам вроде
åäö
.Обновление 2018-01-29
Приведенный выше синтаксис работает только при использовании одного метода с единственным аргументом правильного типа (в данном случае
char
).Чтобы использовать несколько условий, вам нужно написать так:
источник
char.IsLetterOrDigit('ก')
вернетсяtrue
. csharppad.com/gist/f96a6062f9f8f4e974f222ce313df8caВы могли бы легко сделать это с помощью функции расширения, а не регулярного выражения ...
За комментарий :) ...
источник
char.IsLetterOrDigit
вместо IsLetter + IsNumberХотя я думаю, что решение на основе регулярных выражений, вероятно, является тем путем, которым я бы пошел, я бы хотел инкапсулировать это в типе.
Теперь, когда вам нужна проверенная строка, вы можете иметь подпись метода, требующую AlphaNumericString, и знать, что если вы ее получите, она действительна (кроме нулей). Если кто-то попытается передать непроверенную строку, это вызовет ошибку компилятора.
Вы можете стать более интересным и реализовать все операторы равенства или явное приведение к AlphaNumericString из простой строки, если вам интересно.
источник
static public implicit operator string
частьМне нужно было проверить AZ, az, 0-9; без регулярного выражения (хотя OP запрашивает регулярное выражение).
Смешивая здесь различные ответы и комментарии, а также обсуждения из https://stackoverflow.com/a/9975693/292060 , это проверяет букву или цифру, избегая букв других языков и избегая других чисел, таких как символы дроби.
источник
^\w+$
позволитa-zA-Z0-9_
Используйте,
^[a-zA-Z0-9]+$
чтобы запретить подчеркивание.Обратите внимание, что оба из них требуют, чтобы строка не была пустой. Использование
*
вместо+
разрешает пустые строки.источник
^[\w-]+$
Чтобы проверить, является ли строка комбинацией букв и цифр, вы можете переписать ответ @jgauffin следующим образом, используя .NET 4.0 и LINQ:
источник
Тот же ответ, что и здесь .
Если вам нужна
A-z 0-9
проверка ASCII без регулярного выражения , вы не можете использовать ее, такchar.IsLetterOrDigit()
как она включает другие символы Unicode.Что вы можете сделать, так это проверить диапазоны кодов символов.
Следующее немного более подробное, но оно сделано для простоты понимания, а не для игры в гольф.
источник
Основываясь на ответе cletus, вы можете создать новое расширение.
источник
Я советую не зависеть от готового и встроенного кода в .NET framework, попытаться найти новое решение .. это то, что я делаю ..
источник
char.IsNumber()
метод, поскольку это предварительно созданный код?