Нужен шаблон RegEx для списка запятых дат с разделением запятыми - PullRequest
0 голосов
/ 01 марта 2011

Примеры:

2011-01-01

2011-01-01,2011-01-28,2011-12-31

и т.д.

Мне не нужно проверять правильность самих дат, просто список в правильном формате.

Я использую:

^ [0-9] + ([0-9] +) * $

Для сопоставления списка чисел, разделенных запятыми, и:

^ [0-9] {4} - [0-9] {2} - [0-9] {2} $

соответствует одной дате в желаемом формате, но:

^ [0-9] {4} - [0-9] {2} - [0-9] {2} + ([0-9] {4} - [0-9] {2} - [0-9] {2} +) * $ * +1028 *

Кажется, не работает, и я не уверен, почему.

На тот случай, если проблема на самом деле связана с моей функцией Excel VBA, я добавлю это и здесь:

Public Function ValidDateList(ByVal value As String) As Boolean
    Dim oRegEx As Object
    Set oRegEx = CreateObject("VBScript.RegExp")
    With oRegEx
        .Pattern = "^[0-9]{4}-[0-9]{2}-[0-9]{2}+(,[0-9]{4}-[0-9]{2}-[0-9]{2}+)*$"
        ValidDateList = .test(value)
    End With
    Set oRegEx = Nothing
End Function

1 Ответ

3 голосов
/ 01 марта 2011

Первое, что я сделаю, это вытащу эти + символы.

Это похмелье от вашего многозначного шаблона (первого) и, в лучшем случае, излишни.

В худшем случае они могут требовать литерала + из-за того, что в вашем предыдущем шаблоне уже есть повторитель (вам придется проверить эту теорию, я не знаю Excel Двигатель RE это хорошо).

Попробуйте:

^[0-9]{4}-[0-9]{2}-[0-9]{2}(,[0-9]{4}-[0-9]{2}-[0-9]{2})*$

вместо.

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