为什么我的DOB正则表达式不被接受?

时间:2019-03-18 13:50:34

标签: regex xml xsd

我正在研究模式,并且希望在1970年1月1日至2000年12月31日之间进行以下DOB限制。

我的下面代码是:

if (cursor != null && cursor.getCount() > 0) {
    cursor.moveToFirst();

    do {

        long reportDate = cursor.getLong(cursor.getColumnIndex(ForecastsItemAccountDetailsContract.Columns.Report_Date));
        long itemId = cursor.getLong(cursor.getColumnIndex(ForecastsItemAccountDetailsContract.Columns.Item_ID));
        long accountId = cursor.getLong(cursor.getColumnIndex(ForecastsItemAccountDetailsContract.Columns.Account_ID));
        int forecastedUnits = cursor.getInt(cursor.getColumnIndex(ForecastsItemAccountDetailsContract.Columns.Forecasted_Units));

        for (Forecast forecast : mForecasts) {

            if ((forecast.getForecast_From() < reportDate) && (forecast.getForecast_To() >= reportDate)) {

                for (Item item : forecast.getItems()) {

                    if (item.getItem_ID() == itemId) {

                        for (Account account : item.getAccounts()) {

                            if (account.getAccount_ID() == accountId) {

                                account.setForecastedUnits(forecastedUnits);
                            }
                        }
                    }
                }
            }
        }

    } while (cursor.moveToNext());
}

我收到此验证错误:

  

错误:元素'DOB':[facet'pattern']模式'([[0] [1-9] | 1 [0-2])/ (0 [1-9] | [12] [0-9] | 3 [01])/(199 [0-9] | 200 [0-9] | 201 [01])'。

1 个答案:

答案 0 :(得分:3)

如果该日期或月份为1到9,请尝试使该日期和月份的第一位为可选:

<xs:pattern value="(0?[1-9]|1[0-2])/(0?[1-9]|[12][0-9]|3[01])/(19[7-9][0-9]|2000)"/>

Demo

除此之外,您的年份捕捉模式也有问题。我使用以下模式来匹配从1970年1月1日到2000年12月31日的所有年份:

(19[7-9][0-9]|2000)