我是正则表达式模式的新手。需要帮助...... 我有正则表达式
String s = "^[0-9]*([,.][0-9]{0,2})?$";
现在模式正在接受像1.2, 1.3, 1.4
这样的小数,以及1,2 3,4 4,5
上述正则表达式模式也接受单个字符,
或.
,它不应该接受。我该怎么改变它? :)
答案 0 :(得分:1)
在群组中使用{1,2}
作为数字重复,以避免匹配,
或.
字符。
^[0-9]*([,.][0-9]{1,2})?$
虽然您可以将\d
用于数字组。
^\d*([,.]\d{1,2})?$
更新:使用negative look-ahead assertion可避免单个,
或.
字符匹配。此外,这会匹配数字,然后是,
或.
。
^(?!\D$)\d*([,.]\d{0,2})?$
// or
^(?![,.]$)\d*([,.]\d{0,2})?$
答案 1 :(得分:1)
^(?![.,]$)(?:\d|\d*[.,]?\d{0,2})$
匹配:
0
1.
.2
1,
,2
不匹配:
.
,
按要求
答案 2 :(得分:0)
下面:
{0,2}
表示:第二组可以是EMPTY(因为正则表达式接受零到2位数)。您可以将其更改为
{1,2}
表示:至少一位数!
另外/另外:您还可以将第一部分[0-9]*
更改为[0-9]+
- 如果您想要强制执行,则启动 >有一个数字! (现在,你会接受输入,例如" .05" - 也许你想要允许,也许不允许)