如何检查字符串只包含数字和一个小数点?

use*_*339 7 java regex string decimal

我的想法是这样的,但我不知道正确的代码

if (mystring.matches("[0-9.]+")){
  //do something here
}else{
  //do something here
}
Run Code Online (Sandbox Code Playgroud)

我想我差不多了.唯一的问题是字符串中可能存在多个小数点.我确实找到了这个答案,但我找不到如何.

Tim*_*out 9

如果你想 - > 确保它是一个数字并且只有一个小数 < - 请尝试使用此RegEx:

if(mystring.matches("^[0-9]*\\.?[0-9]*$")) {
    // Do something
}
else {
    // Do something else
}
Run Code Online (Sandbox Code Playgroud)

此RegEx声明:

  1. ^表示字符串必须以此开头.
  2. 后跟没有或多个数字(*执行此操作).
  3. 可选择有一个小数(?执行此操作).
  4. 跟随没有或更多数字(*执行此操作).
  5. $表示它必须以此结束.

请注意,项目符号#2是为了捕获某人输入".02".

如果这是无效的,请使RegEx: "^[0-9]+\\.?[0-9]*$"

  • 唯一的区别是+符号.这将强制小数前面有一个数字:0.02

  • 对正则表达式的很好的解释。你不会经常看到人们解释它。 (2认同)

lta*_*rne 0

int count=0;
For(int i=0;i<mystring.length();i++){    
    if(mystring.charAt(i) == '/.') count++;
}
if(count!=1) return false;
Run Code Online (Sandbox Code Playgroud)