Как проверить на специальные символы с помощью regex

СЕТЬ. Я создал regex блок проверки допустимости для проверки на средства специальных символов меня, donot хотят любые специальные символы в имени пользователя. Следующее является кодом

Regex objAlphaPattern = new Regex(@"[a-zA-Z0-9_@.-]");
            bool sts = objAlphaPattern.IsMatch(username);

Если я ввожу имя пользователя как % $ ^&asghf затем, блок проверки допустимости дает как недопустимый формат данных, который является результатом, который я хочу, но Если я обеспечиваю данные s23 _ @.-^& () %^ $ # затем, мой блок проверки допустимости должен заблокировать данные, но мой блок проверки допустимости позволяет данные, которые являются неправильными

Таким образом, как не позволить любые специальные символы кроме a-z A-A 0-9 _.-

Спасибо Sunil Kumar Sahoo

7
задан Fredrik Mörk 17 February 2010 в 09:26
поделиться

3 ответа

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

Во-вторых, в настоящее время вы ищете только один символ. Для принудительного поиска всех символов вам нужно использовать * Вот что должно получиться:

Regex objAlphaPattern = new Regex(@"^[a-zA-Z0-9_@.-]*$");
bool sts = objAlphaPattern.IsMatch(username);
14
ответ дан 6 December 2019 в 14:03
поделиться

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

Во-вторых, в настоящее время вы ищете только одного персонажа. Чтобы принудительно сопоставить все символы, необходимо использовать * Вот что должно быть:

Regex objAlphaPattern = new Regex(@"^[a-zA-Z0-9_@.-]*$");
bool sts = objAlphaPattern.IsMatch(username);
-121--3879622-

addend делает контекстное дополнение, как сказал Игнасио Васкес-Абрамс (ну, подразумевается) - так, хотя вы могли бы исправить, что, просто добавив return к вашей функции, это имело бы побочный эффект изменения аргумента, который он был передан, тоже:

@composable
def f4(a):
    a.append(0)
    return a

Лучше всего использовать следующий еще более сжатый код, который также создает и возвращает новый объект:

@composable
def f4(a):
  return a + [0]
-121--3375269-

Шаблон проверяет только то, содержит ли данная последовательность какой-либо «неособый» символ; не исключает нежелательных символов. Вы хотите изменить две вещи; убедитесь, что весь ряд содержит только разрешенные символы, а также проверьте наличие нескольких символов:

^[a-zA-Z0-9_@.-]+$

Добавлено ^ перед образцом, чтобы он начал совпадать в начале последовательности. Также добавлены + $ после, + для проверки наличия хотя бы одного символа в последовательность и $ для проверки соответствия последовательности концу.

1
ответ дан 6 December 2019 в 14:03
поделиться

Измените регулярное выражение на ^ [a-zA-Z0-9 _ @ .-] + $ . Здесь ^ обозначает начало строки, $ - конец строки.

0
ответ дан 6 December 2019 в 14:03
поделиться
Другие вопросы по тегам:

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