Объединение .net Регулярные выражения - PullRequest
2 голосов
/ 27 января 2010

Я пытаюсь объединить два регулярных выражения .net в одно. Следующие выражения проверяют Excel как имена ячеек.

Regex.IsMatch(name, @"^[A-Za-z]{1}[\w\.]*$") && 
    !Regex.IsMatch(name, @"^[A-Za-z]{1,2}\d+$");

Первая часть гарантирует, что имя ячейки начинается с символа и может иметь любую длину. Второй гарантирует, что имя ячейки не является ссылкой на ячейку; например, A1, AA1, AA11 и т. д.

Ответы [ 2 ]

1 голос
/ 27 января 2010

Полагаю, вы можете исключить 2-й вызов IsMatch, и это не должно иметь значения.

Regex.IsMatch(name, @"^[A-Za-z]{1}[\w.]*$")

Этот шаблон в itsslef гарантирует отсутствие цифр (0 - 9) в строке, поэтому его должно быть достаточно.

1 голос
/ 27 января 2010

Может работать следующее:

^[A-Za-z](?![A-Za-z]?\d+$)[\w.]*$

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

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