正则表达式在 zul -ZK 中不起作用

Regex not working in zul -ZK

我正在与 Java 和 ZK 合作。尝试使用正则表达式作为文本框的约束。

这是正则表达式:^[0-9]{1,9}(?:\.[0-9]{1,3})?$。 它在 Java 中工作正常,但在 zul textbox 中使用时,出现错误:Unknown constraint: ^[0-9]{1 请查看随附的屏幕截图:

正则表达式的有效值-

121245.121(3 digits after decimal is valid)
2145.11
0.23
5748579

无效值-

.111
45445.454545(3 digits after decimal is valid)
-1545.2
22..

zul中的代码如下-

<textbox xmlns:w="client" id="bal" maxlength="12" tooltiptext="Balance" constraint="^[0-9]{1,9}(?:\.[0-9]{1,3})?$">

ZK Fiddler 可以在以下位置找到:http://zkfiddle.org/sample/2c9e93q/2-Textbox-regex-issue

谁能帮我解决这个问题?

我没有修复正则表达式(它似乎不起作用),但要在约束中使用你的正则表达式,你必须将它包含在 /:[=15= 之间]

<textbox xmlns:w="client" id="bal" maxlength="12" tooltiptext="Balance" 
         constraint="/^[0-9]{1,9}(?:\.[0-9]{1,3})?$/"/>

演示:http://zkfiddle.org/sample/2bcm8bj/2-Textbox-regex-issue


来自doc

To specify a regular expression, you may have to use the character / to enclose the regular expression as follows. <textbox constraint="/.+@.+\.[a-z]+/"/>

作为@RC。在上面的答案中提到, regex delimiters (/<pattern>/) 需要在 pattern 属性值中定义一个正则表达式。但是,您的正则表达式将允许像 67\k78 这样的值,因为 \ 定义了文字反斜杠,点代表除换行符之外的任何字符。

正确的正则表达式是

<textbox constraint="/^[0-9]{1,9}(?:[.][0-9]{1,3})?$/" xmlns:w="client" id="bal" maxlength="12" tooltiptext="Balance">
                     ^              ^^^             ^

注意点放在字符中时不需要转义 class [.].

参见updated fiddle