VB.NET Regex Match 5 и 10 char Почтовый индекс в 1 группе - PullRequest
0 голосов
/ 28 декабря 2011

Я использую этот код

(\d{5})([\-]\d{4})?\s*

Что соответствует моему почтовому индексу

12345-1234

в 2 группах

1. 12345
2. -1234

Мне нужно, чтобы он совпадал с 12345 (5-символьным почтовым индексом) и 12345-1234 (10-символьным почтовым индексом) в одной группе. Это возможно?

РЕДАКТИРОВАТЬ:

(\d{5}-\d{4}|\d{5})

(Благодаря vcsjones) удовлетворяет исходный вопрос.

Однако он не получает только 12345 в случае неправильно сформированного почтового индекса (например, 12345-123)

Есть ли способ сделать это?

1 Ответ

3 голосов
/ 28 декабря 2011

Вы можете попробовать это:

(\d{5}-\d{4}|\d{5})

Edit:

Однако он не извлекает только 12345 в случае неправильно сформированного почтового индекса (например, 12345-123)

Ты уверен? Это приводит к совпадению:

Dim zip5 As String = "12345"
Dim zip9 As String = "12345-6789"
Dim partialZip9 = "12345-33"
Dim regex As New Regex("(\d{5}-\d{4}|\d{5})")
Dim zip5Match = regex.Match(zip5).Groups(0).Value 'Produces 12345
Dim zip9Match = regex.Match(zip9).Groups(0).Value 'Produces 12345-6789
Dim partialZip9Match = regex.Match(partialZip9).Groups(0).Value 'Produces 12345
...