【发布时间】:2021-06-29 22:30:01
【问题描述】:
我试图确保给定的 Birt 参数恰好包含一个、两个或三个 4 位数年份 csv。 所以这些会很好:
2017
2017,2018
=2017
= 2017,2018, = 2019
2019,2020,2021
这些会很糟糕
abc
2019,2018,2017,2016
2019,dddd,2020
我试过这个:
if(BirtComp.test(params["Fiscal Year"].value,"^ *?=? *?\d\d\d\d *?=? *?(, *?=? *?\d\d\d\d *?=? *?)?(, *?=? *?\d\d\d\d *?=? *?)?$"))
{
yearsValid=true;
} else {
yearsValid=false;
}
但即使参数只有2020这样的4位数字,它也永远不会返回真实。
我在数据集的打开脚本中执行此操作。 它似乎在记事本++中工作正常
作为这里的进一步数据点,这些都未能在 Birt 中的 javascript 中编译,我试图将其放在数据集的 OPEN 底部。请注意,“试试这个”在 notepad++ 中效果很好:
//try this ^=? *\d{4}(?:[, =]+\d{4}){0,2}$
//generalDebug01 = BirtComp.test(params["Fiscal Year"].value,BirtComp.test(params["Fiscal Year"].value,"\\d\\d" ));
//generalDebug01 = BirtComp.test(params["Fiscal Year"].value,BirtComp.test(params["Fiscal Year"].value,/\d\d/ ));
//generalDebug01 = BirtComp.test(params["Fiscal Year"].value,BirtComp.test(params["Fiscal Year"].value,/\\d\\d/ ));
//generalDebug01 = BirtComp.test(params["Fiscal Year"].value,BirtComp.test(params["Fiscal Year"].value,/^=? *\d{4}(?:[, =]+\d{4}){0,2}$/ ));
//generalDebug01 = BirtComp.test(params["Fiscal Year"].value,BirtComp.test(params["Fiscal Year"].value,/^=? *\\d{4}(?:[, =]+\\d{4}){0,2}$/ ));
有人能指出我做错了什么吗?这更像是一个 Birt javascript 正则表达式问题,而不是一个正则表达式问题。
【问题讨论】:
标签: javascript regex birt