我希望此正则表达式匹配这些有效的数字格式:
"^[+,-]?[0-9]*(\\.[0-9]*)?$"
1. [+,-]? : + or - optional
2. [0-9]* : as many 0 to 9 number
3. (\\.[0-9]*)? : . and as many 0 to 9 number optional
我快到了,因为我按照需要得到以下内容:
"99999" -> true
"99" -> true
"9.9" -> true
"9.999" -> true
"9." -> true
"-9." -> true
"+9.9" -> true
"-0.9" -> true
"-.9" -> true
但是,以下情况应为false,但正则表达式输出为true:
"+."
"."
我需要改变什么?
答案 0 :(得分:2)
答案 1 :(得分:1)
答案 2 :(得分:1)
^(?!(?:\+|\+\.|\.)$)[+,-]?[0-9]*(\.[0-9]*)?$
试试这个。看看演示。
https://regex101.com/r/oL9kE8/3
escape \ if required
^(?!(?:\\+|\\+\\.|\\.)$)[+,-]?[0-9]*(\\.[0-9]*)?$
negative lookahead
将确保+.
,+
,.
不匹配。