1

我需要为以下场景创建一个正则表达式。

它只能有数字,只能有一个点或逗号。

第一部分可以有一到三个数字。第二部分可以是点或逗号。第三部分可以有一到两位数字。

有效的场景是

123,12
123.12
123,1
123
12,12
12.12
1,12
1.12
1,1
1.1
1

到目前为止我想出了这个表达

\d{1,3}(?:[.,]\d{1,2})?

但效果不好。例如输入是 11:11 被标记为有效。

4

2 回答 2

5

你需要在你的表情周围放置锚点:

^\d{1,3}(?:[.,]\d{1,2})?$

^将匹配字符串的开头

$将匹配字符串的结尾

如果这些锚点丢失,它将在您的字符串上部分匹配,因为最后一部分是可选的,这意味着在“11:11”上它可以匹配冒号之前的数字,第二次匹配将匹配冒号之后的数字。

于 2012-10-11T09:41:57.567 回答
2

尝试使用^$

^\d{1,3}(?:[.,]\d{1,2})?$

^ 匹配必须从字符串或行的开头开始。

$ 匹配必须出现在字符串\n的末尾或行或字符串的末尾之前。

于 2012-10-11T09:44:25.997 回答