Crystal Reports 不支持正则表达式,但您可以使用一些字符串函数来实现您想要的。
还有一个类似的问题,其中包含指向正则表达式库的链接:
Crystal reports: is there a way to regex in crystal reports?
以下公式使用了 Crystal Reports 的一些基本字符串函数:
示例 1:
此公式适用于字符范围。这里的问题是还包括其他字符(例如像ä ö ü 这样的变音符号)。
如果这不是您想要的,那么“示例 2”应该可以工作。
stringVar productDesc := "a3xZ";
Len(productDesc)=4 And
Left(productDesc,1) In "a" To "z" And
Mid(productDesc,2,1) In "0" To "9" And
Mid(productDesc,3,1) In "a" To "z" And
Right(productDesc,1) In "a" To "z"
示例 2:
此公式适用于 ASCII 码,因此可以排除元音变音字符。
ASCII 码
48 到 57 是数字 [0-9]
65 到 90 是大写字符 [A-Z]
97 到 122 是小写字符 [a-z]
stringVar productDesc := "a3xZ";
Len(productDesc)=4 And
Asc(Left(productDesc,1)) In [97 To 122, 65 To 90] And
Asc(Mid(productDesc,2,1)) In 48 To 57 And
Asc(Mid(productDesc,3,1)) In [97 To 122, 65 To 90] And
Asc(Right(productDesc,1)) In [97 To 122, 65 To 90]
所以对于第二个示例,选择公式如下所示:
Len({Product_Costs.Product_Description_Short})=4 And
Asc(Left({Product_Costs.Product_Description_Short},1)) In [97 To 122, 65 To 90] And
Asc(Mid({Product_Costs.Product_Description_Short},2,1)) In [97 To 122, 65 To 90] And
Asc(Mid({Product_Costs.Product_Description_Short},3,1)) In 48 To 57 And
Asc(Right({Product_Costs.Product_Description_Short},1)) In [97 To 122, 65 To 90]