生命周期RegEx错误与字符长度

时间:2014-12-22 20:45:36

标签: javascript regex livecycle

我正在尝试使用正则表达式在Livecycle中工作。我将文本字段和语言的change事件下的代码设置为JavaScript。代码是:

if (xfa.event.newText.match(/^[0-9]{5}$/))      
{
xfa.event.change = "";
}

问题是文本字段是接受任意数量的字母数字字符还是只接受4个数字字符。

这只是正则表达式的第一部分,完整的部分将是(EC + 3位,C + 4位,5位)/[e][c][0-9]{3}|[c][0-9]{4}|[0-9]{5}/i但我想先测试功能。

1 个答案:

答案 0 :(得分:1)

你的正则表达式基本上是说"如果你所做的改变之后的新文本等于#####(其中#是某个数字),那么就不允许改变。"这意味着它将允许任何其他更改,包括信件等。

所以它与您想要看到的完全相反。

每次用户输入另一个角色时都会触发更改事件,因此如果您希望此操作生效,则必须接受角色的每一步。示例 - E没问题,EC没问题,EC1没问题,但ECC不行。

编辑 - 首先我建议你在退出/验证事件中检查这个而不是更改,但我想了一下,并且在更改时格式化的正则表达式模式实际上并没有那么糟糕。如果您将此代码放在更改事件中,则应阻止用户键入任何不符合这3种格式之一的内容。

EC ###,C ####,#####

if (!xfa.event.newText.match(/^(e|ec|ec\d{1,3}|c|c\d{1,4}|\d{1,5})$/i))
{
    xfa.event.change = "";
}

(该模式不区分大小写,如果您希望区分大小写,请在结尾处删除i。)