С# Regex, чтобы разрешить только буквенно-цифровой
У меня есть следующее regex ^[a-zA-Z0-9]+$
, которое позволит буквенно-цифровые символы. Проблема здесь в том, что если я ввожу только числовой символ типа "897687", то регулярное выражение все еще совпадает. Я не хочу, чтобы это произошло. Должен быть хотя бы один текстовый символ, и он должен начинаться с текстового символа. Например, например, "a343" или "a98bder" или "a4544fgf343"
Было бы здорово, если бы вы могли помочь мне улучшить мое регулярное выражение для этого.
Ответы
Ответ 1
Похоже, вы хотите:
^[a-zA-Z][a-zA-Z0-9]*$
ОБЪЯСНЕНИЕ
^ устанавливает позицию в начале строки
Совпадение с одним символом, представленным в списке ниже [a-zA-Z]
"A-z один символ в диапазоне между a (индекс 97) и z (индекс 122) (с учетом регистра)
"A-Z - один символ в диапазоне от A (индекс 65) до Z (индекс 90) (с учетом регистра)
Соответствует одному символу, представленному в списке ниже [a-zA-Z0-9] *
* Quantifier - сопоставляет от нуля до неограниченного числа раз столько раз, сколько возможно, возвращая при необходимости (жадный)
a-z один символ в диапазоне между a (индекс 97) и z (индекс 122) (с учетом регистра)
A-Z один символ в диапазоне между A (индекс 65) и Z (индекс 90) (с учетом регистра)
0-9 один символ в диапазоне от 0 (индекс 48) до 9 (индекс 57) (с учетом регистра)
$ устанавливает позицию в конце строки
демонстрация
Ответ 2
На всякий случай, если символы ASCII в какой-то момент недостаточно, здесь версия Unicode:
^\p{L}[\p{L}\p{N}]*$
\p{L}
- любая кодовая точка Юникода, которая имеет букву свойства == > Любая буква с любого языка (то есть в Юникоде)
\p{N}
- любая точка кода Юникода, которая имеет номер свойства == > Любой номер символа с любого языка (который находится в Юникоде)
Ответ 3
^[a-zA-Z][a-zA-Z0-9]*$
Сделайте трюк!
В качестве альтернативы, если вы хотите включить все буквенно-цифровые символы плюс подчеркивание, вы можете использовать:
^[a-zA-Z][\w]*$
Ответ 4
Эта функция вернет true или false в зависимости от соответствия регулярного выражения или нет,
public static Boolean isAlphaNumeric(string strToCheck)
{
Regex rg = new Regex(@"^[a-zA-Z0-9\s,]*$");
return rg.IsMatch(strToCheck);
}
Ответ 5
Или немного менее подробный, чем принятый ответ:
^[a-zA-Z][\w]*$
В regex С# есть символ класса символов "\ w" для буквенно-цифровых символов, но не имеет класса символов только для буквенных (без цифр), поэтому вам необходимо указать набор классов [a-zA-Z] вручную.
Ответ 6
Это лучшее решение для проверки буквенно-цифровых символов,
- если это только строка - "Ошибка".
- если он только целочисленный - "Ошибка".
-
если он буквенно-цифровой - "Успех".
if (System.Text.RegularExpressions.Regex.IsMatch(txt.Text, @"[a-zA-Z]") &&
System.Text.RegularExpressions.Regex.IsMatch(txt.Text, @"[0-9]")
{
// Success - It is alphanumric
}
else
{
// Error - It is not alphanumric
}