Подтвердить что ты не робот

С# Regex, чтобы разрешить только буквенно-цифровой

У меня есть следующее regex ^[a-zA-Z0-9]+$, которое позволит буквенно-цифровые символы. Проблема здесь в том, что если я ввожу только числовой символ типа "897687", то регулярное выражение все еще совпадает. Я не хочу, чтобы это произошло. Должен быть хотя бы один текстовый символ, и он должен начинаться с текстового символа. Например, например, "a343" или "a98bder" или "a4544fgf343"

Было бы здорово, если бы вы могли помочь мне улучшить мое регулярное выражение для этого.

4b9b3361

Ответ 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
    }