Проверить буквенно-цифровые символы в строке в С#

Я использовал следующий код, но он возвращает false, хотя он должен возвращать true

string check,zipcode;
zipcode="10001 New York, NY";
check=isalphanumeric(zipcode)

public static Boolean isAlphaNumeric(string strToCheck)
{
    Regex rg = new Regex("[^a-zA-Z0-9]");

    //if has non AlpahNumeric char, return false, else return true.
    return rg.IsMatch(strToCheck) == true ? false : true;
}

Ответы

Ответ 1

Попробуйте следующее:

public static Boolean isAlphaNumeric(string strToCheck)
{
    Regex rg = new Regex(@"^[a-zA-Z0-9\s,]*$");
    return rg.IsMatch(strToCheck);
}

Это более неустранимо, если вы укажете в regex, что ваша строка ДОЛЖНА содержать, а не то, что НЕ ДОЛЖНО.

В приведенном выше примере:

  • ^ - означает начало строки
  • [] * - может содержать любое количество символов между скобками
  • a-zA-Z0-9 - любые буквенно-цифровые символы
  • \s - любые символы пробела (пробел/табуляция и т.д.).
  • - запятые
  • $- конец строки

Ответ 2

    public static bool IsAlphaNumeric(string strToCheck)
    {
        return strToCheck.All(char.IsLetterOrDigit);
    }

Ответ 3

10001 New York, NY содержит запятую и пробелы - не буквенно-цифровые

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

Кроме того, вы, вероятно, захотите переименовать функцию, чтобы другим разработчикам было ясно, что она скорее является валидатором, чем функцией isAlphaNumeric().

Ответ 4

Когда ^ находится в [], это означает все, кроме этих символов.

Ответ 5

tring check,zipcode;
zipcode="10001 New York, NY";
check=isalphanumeric(zipcode)

    public static Boolean isAlphaNumeric(string strToCheck)
            {
                Regex rg = new Regex("[^a-zA-Z0-9]");

                //if has non AlpahNumeric char, return false, else return true.
                return rg.IsMatch(strToCheck) == true ? false : true;
            }

этот код возвращает всегда false, потому что символ-символ означает, что эта строка не содержит буквенно-цифровой caractere, вам нужно удалить этот ^

Ответ 6

В мои дни perl я бы использовал это регулярное выражение:

\ ш +

что означает один или несколько символов слова. Символ слова в основном a-zA-Z0-9 и в основном не заботится о пунктуации или пробелах. Поэтому, если вы просто хотите убедиться, что в строке есть значение значения, это то, что я использовал в С#:

public static Boolean isAlphaNumeric(string strToCheck)
{
    Regex rg = new Regex(@"\w+");
    return rg.IsMatch(strToCheck);
}

Благодаря Хопикадзе для основной структуры.

Я думаю, что это будет быстрее, потому что вместо проверки всей строки он остановится в первом экземпляре символа слова и вернет true.

Ответ 7

Мне нужен был метод, чтобы увидеть, содержит ли строка какой-либо альфа-числовой, без использования Regex...

  public static bool ContainsAlphaNumeric(string strToCheck)
        {
            foreach(char c in strToCheck)
            {
                if (char.IsLetterOrDigit(c))
                {
                    return true;
                }
            }
            return false;
        }