Используя регулярное выражение .NET, сопоставьте любую строку точно с 9 цифрами - PullRequest
2 голосов
/ 21 мая 2010

Я пытаюсь создать выражение регулярного выражения, чтобы соответствовать любой строке, которая имеет ровно 9 цифр. цифры могут существовать в любом месте строки.

Например, если вы передадите следующие строки, вы получите совпадение: 123456789 123aeiou456abc789

Эти строки не могут обеспечить совпадение 12345678 1234567890

Ответы [ 3 ]

8 голосов
/ 21 мая 2010

Попробуйте это:

@"^(\D*\d){9}\D*$"

Или используйте эту улучшенную версию. Предполагается, что вы хотите соответствовать только 0-9, а не другим символам, которые представляют цифры на других языках. Для повышения производительности также используется группа без захвата:

"^(?:[^0-9]*[0-9]){9}[^0-9]*$"

Вот разбивка того, что это значит:

^        Start of string.
(?:      Start a non-capturing group.
[^0-9]*  Match zero or more non-digits.
[0-9]    Match exactly one digit.
)        Close the group.
{9}      Repeat the group exactly 9 times.
[^0-9]*  Match zero or more non-digits.
$        End of string.

Вот испытательный стенд для него:

string regex = "^(?:[^0-9]*[0-9]){9}[^0-9]*$"
string[] tests = {
                     "123456789",
                     "123aeiou456abc789",
                     "12345678",
                     "1234567890"
                 };
foreach (string test in tests)
{
    bool isMatch = Regex.IsMatch(test, regex); 
    Console.WriteLine("{0}: {1}", test, isMatch);
}

Результаты:

123456789: True
123aeiou456abc789: True
12345678: False
1234567890: False
1 голос
/ 21 мая 2010

проверить сайт

http://www.regexlib.com/CheatSheet.aspx

Я нашел это очень полезным.

0 голосов
/ 21 мая 2010

Вот мой дубль: ^[^0-9]*[0-9]{9}[^0-9]*$

FWIW, есть ДЕЙСТВИТЕЛЬНО классное маленькое приложение, которое поможет вам построить RegEx, которое будет анализировать их и объяснять, что делает ваше выражение на простом английском языке, а также предоставляет реальный интерфейс, чтобы помочь вам добавить выражения, с которыми вы, возможно, не очень хорошо знакомы , Выезд Экспрессо .

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