我有这个正则表达式:^(\d*.?\d*)$
所有数字,但有些数字不匹配此正则表达式
一些例子:
54139 // work
24.711 // won't work, not a float but dot is the separator
0 // won't work
60 // won't work
我在RegexValidator中使用了这个正则表达式。我正在验证文本字段:
TextField textField = new TextField(caption);
textField.setValue(value);
textField.addValidator(new StringLengthValidator(value + " ...",10, 50, true));
textField.addValidator(new RegexpValidator("^(\\d*.?\\d*)$", value + " ..."));
我用另一个正则表达式尝试了它:^[0-9,.]+$
答案 0 :(得分:0)
如果我正确理解了您的问题,您需要验证多行TextField
的内容,并希望接受由{{1}的一行或多行非空序列组成的内容分离的浮点数和整数。
此声明可简化如下:您希望匹配由.
或换行符分隔的数字序列,其中数字可包含小数部分。
如果然后使用以下.
:
RegexpValidator
在此正则表达式中,数字表示为new RegexpValidator("\\d+(,\\d+)?([.\\n]\\d+(,\\d+)?)*", true, value + "...")
,表示必需的整数部分,后跟可选的小数部分及其逗号分隔符。
全局正则表达式接受上面定义的数字,后跟一个(可能是空的)其他数字序列,前面有一个接受的分隔符,\\d+(,\\d+)?
或换行符。
我使用以下表达式验证了我的回答,该表达式返回.
:
true
请注意,我删除了您使用的锚点,并改为使用"54139\n12.5\n1,2.5,3\n12,5".matches("\\d+(,\\d+)?([.\\n]\\d+(,\\d+)?)*");
的{{1}}参数。
正则表达式可以说可以减少到complete
,但是会停止表示RegexpValidator
之间的差异,\d+([.,\n]\d+)*
是数字之间的分隔符,.
是数字的一部分。它在运行时对于验证器来说并不重要,但可能会给维护代码的人带来困惑,如果您以后想要匹配不同的数字,则无法轻易地重复使用。