我需要为以下场景创建一个正则表达式.
它只能有数字,只有一个点或逗号.
第一部分可以有一到三个数字.第二部分可以是点或逗号.第三部分可以有一到两个数字.
有效的方案是
123,12
123.12
123,1
123
12,12
12.12
1,12
1.12
1,1
1.1
1
Run Code Online (Sandbox Code Playgroud)
到目前为止,我带着这个表情走了过来
\d{1,3}(?:[.,]\d{1,2})?
Run Code Online (Sandbox Code Playgroud)
但它效果不好.例如,输入为11:11被标记为有效.
你需要在你的表达式周围放置锚点:
^\d{1,3}(?:[.,]\d{1,2})?$
Run Code Online (Sandbox Code Playgroud)
^ 将匹配字符串的开头
$ 将匹配字符串的结尾
如果缺少这些锚点,它将在你的字符串上部分匹配,因为最后一部分是可选的,意味着在"11:11"它可以匹配冒号前的数字,第二个匹配将在冒号后的数字上.