如何限制'。'或','在使用正则表达式模式的字符串中

时间:2017-02-01 13:32:15

标签: java regex

我是正则表达式模式的新手。需要帮助...... 我有正则表达式

String s = "^[0-9]*([,.][0-9]{0,2})?$";

现在模式正在接受像1.2, 1.3, 1.4这样的小数,以及1,2 3,4 4,5

上述正则表达式模式也接受单个字符,.,它不应该接受。我该怎么改变它? :)

3 个答案:

答案 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" - 也许你想要允许,也许不允许)