(?:\d.*){7,}
(?:...)
- сгруппировать содержащийся шаблон в атомную единицу
\d
- соответствует цифре
.*
соответствует 0 или более символам
{7,}
соответствует 7 или более из предыдущего шаблона
Если единственными разделителями, которые вы хотите игнорировать, являются пробелы, тире, скобки и символ 'X', используйте вместо этого:
(?:\d[- ()X]*){7,}
[...]
создает класс символов, соответствующий любому из содержащихся в нем символов
Разница, например, в том, что первое регулярное выражение будет соответствовать "a1b2c3d4e5f6g7h"
, а второе - нет.
Как указывает Грегор в комментариях, выбор регулярного выражения зависит от того, с какой функцией вы его используете. Некоторые функции ожидают, что регулярное выражение будет соответствовать всей строке, и в этом случае вы должны добавить дополнительный .*
перед, чтобы соответствовать любому заполнению перед 7 цифрами. Некоторые ожидают, что регулярное выражение будет соответствовать части строки (что я и ожидал в моих примерах).
Согласно документации для IsMatch()
он только «указывает, находит ли регулярное выражение совпадение во входной строке», не требует, чтобы он совпадал со всей строкой, поэтому вам не нужно измени мои примеры, чтобы они работали.