C # Как отфильтровать строки данных, содержащие буквенно-цифровые символы со специальными символами, используя Regex - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть данные ниже в моем C # Datatable

enter image description here

Мне нужно отфильтровать те данные, которые имеют буквенно-цифровые символы, такие как:

HOAUD039# HOAUD00$

Так что я пытаюсь использовать регулярное выражение в своем запросе linq:

var matches =
    dt.AsEnumerable()
    .Where(row => Regex.IsMatch(row["Empolyee_CRC"].ToString(),
                                "^[a-zA-Z0-9!@#$&()\\-`.+,/\"]*$"))
    .CopyToDataTable();

, который возвращает мне как буквенно-цифровой результат, так и буквенно-цифровой с символами, как показано ниже:

enter image description here

Теперь мой вопрос прост и понятен, как правильно показывать результаты только с буквенно-цифровыми символами.

также пробовал это регулярное выражение, но он также не работает ^(?:[\d,\/().]*[a-zA-Z][a-zA-Z\d,\/().]*)?$

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

В своем регулярном выражении вы используете один класс символов, который выберет только один из многих, но у вас есть 3 требования.

Во втором регулярном выражении все необязательно из-за * и?

Вы можете использовать 3 положительных взгляда для подтверждения своих требований:

^(?=.*\d)(?=.*[!@#$&()`.+,\/\-])(?=.*[A-Z])[A-Z\d!@#$&()`.+,\/\-]+$

В C #:

string pattern = @"^(?=.*\d)(?=.*[!@#$&()`.+,\/\-])(?=.*[a-zA-Z])[a-zA-Z\d!@#$&()`.+,\/-]+$";

Это будет соответствовать:

  • ^ Начало строки
  • (?=.*\d) Утверждение цифры
  • (?=.*[!@#$&(). +, / -]) `Утверждение специального символа
  • (?=.*[A-Za-z]) Утвердить строчные или прописные буквы
  • [A-Za-z\d!@#$&(). +, / -] + `Совпадение 1+ раз только разрешенных символов
  • $ Конец строки

Regex demo | C # Демо

0 голосов
/ 12 декабря 2018

Вы можете попробовать это на основе ваших примеров шаблонов, которые будут служить

^(?=.*\d)(?=.*[A-Za-z])(?=.*[!@#$&()\\-`.+,\/\"]).*$

Объяснение

  • ^ -Привязка к началу строки.
  • (?=.*\d) - в совпадении должно быть условие для проверки хотя бы одной цифры.
  • (?=.*[A-Za-z]) - в нем должно быть условие для проверки хотя бы одного символаmatch.
  • (?=.*[!@#$&()\\-. +, / \ "])` - в совпадении должно быть условие для проверки хотя бы одного специального предложения.
  • .* - сопоставить все, кроме новой строки.
  • $ - Конец строки.

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...