正则表达式卷曲括号无法正常工作

时间:2014-12-18 10:09:57

标签: .net regex progress-4gl

我有以下问题:

我正在使用opensge Progress-4gl,版本11.3。 我正在尝试使用正则表达式来检查输入的字符串是否符合我们的要求。

字符串应该只有6个字符长,只有数字。所以我来到这个正则表达式:^ [0-9] {6} $。 根据在线正则表达式测试人员的说法,它应该可行。

现在,当我正在使用此正则表达式时,就好像忽略/删除{6}部分一样。

完整代码:

DEFINE VARIABLE regexp               AS CLASS System.Text.RegularExpressions.Regex NO-UNDO.
regexp = NEW System.Text.RegularExpressions.Regex("^[0-9]{6}$").
IF NOT regexp:IsMatch(objKonprest:orderref) THEN
DO:
    MESSAGE "Orderref is not valid!"
           VIEW-AS ALERT-BOX.
end.

objkonprest:orderref可以是任何字符串,但使用ismatch上面的代码将始终返回false,除非它是1个字符的数字。

有没有人有这种问题的经验?我可以使用以下正则表达式解决它:^ [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] $,但这只是愚蠢。

编辑:添加了实际代码

提前致谢:)

1 个答案:

答案 0 :(得分:2)

这是因为{}在ABL中具有特殊含义。逃避{和} 修改后的代码:

DEFINE VARIABLE regexp               AS CLASS System.Text.RegularExpressions.Regex NO-UNDO.
regexp = NEW System.Text.RegularExpressions.Regex("^[0-9]~{6~}$").
IF NOT regexp:IsMatch(objKonprest:orderref) THEN
DO:
    MESSAGE "Orderref is not valid!"
           VIEW-AS ALERT-BOX.
end.