我需要为以下场景创建一个正则表达式。
它只能有数字,只能有一个点或逗号。
第一部分可以有一到三个数字。第二部分可以是点或逗号。第三部分可以有一到两位数字。
有效的场景是
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 被标记为有效。
你需要在你的表情周围放置锚点:
^\d{1,3}(?:[.,]\d{1,2})?$
^
将匹配字符串的开头
$
将匹配字符串的结尾
如果这些锚点丢失,它将在您的字符串上部分匹配,因为最后一部分是可选的,这意味着在“11:11”上它可以匹配冒号之前的数字,第二次匹配将匹配冒号之后的数字。
尝试使用^
和$
:
^\d{1,3}(?:[.,]\d{1,2})?$
^
匹配必须从字符串或行的开头开始。
$
匹配必须出现在字符串\n
的末尾或行或字符串的末尾之前。