我一直在尝试找到我需要的正则表达式。前 3 个字符。和小数点后两个字符。
我试试这个
[+ -]?[0-9]{0,3}[.]?[0-9]{0,2} # but accepted as 55555 or the
[+ -]?[0-9]{0,3}[.][0-9]{0,2} # but this is not accepted as the 44
有人能帮我吗?
我一直在尝试找到我需要的正则表达式。前 3 个字符。和小数点后两个字符。
我试试这个
[+ -]?[0-9]{0,3}[.]?[0-9]{0,2} # but accepted as 55555 or the
[+ -]?[0-9]{0,3}[.][0-9]{0,2} # but this is not accepted as the 44
有人能帮我吗?
55555
在您的第一次尝试中匹配,因为您仅将小数点设为可选,44
而在第二次尝试中未匹配,因为您仅将小数点设为不可选。您要做的是使小数位和以下数字都是可选的。
您还需要以其他方式锚定匹配,123
例如将匹配。45.12
345
12345.12345
如果要验证字符串,请使用:^[-+]?[0-9]{1,3}(\.[0-9]{1,2})?$
解释:
^ # Match the start of string
[-+]? # Optional plus or minus
[0-9]{1,3} # Followed by 1 - 3 digits
(\.[0-9]{1,2})? # Optionally followed by decimal place (escaped \) & 1-2 digits
$ # Match the end of the string
在这里试试吧!
进一步说明:
这将只匹配符合模式的字符串,即123.34
如果你想匹配字符串中的模式,即I am 123.34 cm tall
而不是使用(^|\s)
and(\s|$)
作为锚点:
(^|\s)[-+]?[0-9]{1,3}(\.[0-9]{1,2})?(\s|$)
其中匹配^
行|
首任何空格\s
,与行尾相同$
。匹配将包含空格,因此请记住在trim(match)
需要时将其删除。
你可以尝试这样的事情: -
^?[0-9]{1,3}([.][0-9][0-9]?)?
或者
\d+(\.\d{1,2})?