我有这种模式:
[0-9]*\.?[0-9]
Run Code Online (Sandbox Code Playgroud)
它匹配数字但它也匹配3.5.4:
如何解决(这个输入不应该匹配)?
更新:
这也适用于输入:1 3.5.4 10
1.2.是不允许的
.3是允许的
任何不是numer的字符都是不允许的,例如:a1 2.4f 3. 45,67!
kev*_*kev 12
要匹配json数字:
^[-]?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][+-]?[0-9]+)?$
Run Code Online (Sandbox Code Playgroud)

使用此正则表达式匹配.123:
^[-]?((0|[1-9][0-9]*)(\.[0-9]+)?|\.[0-9]+)([eE][+-]?[0-9]+)?$
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 10
海报评论后更新的答案:
使用lookahead/lookbehind确保前后字符是空格:
这是一个与您的版本非常匹配的版本,但不会进行部分匹配:
(?:^|(?<=\s))[0-9]*\.?[0-9](?=\s|$)
Run Code Online (Sandbox Code Playgroud)
对于这两个示例,当在字符串上运行时,1 2.3.4 5.6它仅匹配1和5.6.
您必须决定是否要接受不带前导零的数字(例如.123).如果你不这样,那么正则表达式很简单:
^-?[0-9]+(\.[0-9]+)?$
Run Code Online (Sandbox Code Playgroud)
如果你这样做,那就有点复杂了:
^-?(?:[0-9]+|[0-9]*\.[0-9]+)$
Run Code Online (Sandbox Code Playgroud)
两者都假定小数点必须后跟至少一个数字.如果您不接受负数,那么领先-?是不必要的.
| 归档时间: |
|
| 查看次数: |
13679 次 |
| 最近记录: |