我的想法是这样的,但我不知道正确的代码
if (mystring.matches("[0-9.]+")){
//do something here
}else{
//do something here
}
我想我差不多了。唯一的问题是字符串中可能存在多个小数点。我确实找到了这个答案,但我找不到。
答案 0 :(得分:9)
如果你想 - > 确保它是一个数字并且只有一个小数 < - 请尝试使用此RegEx:
if(mystring.matches("^[0-9]*\\.?[0-9]*$")) {
// Do something
}
else {
// Do something else
}
此RegEx声明:
请注意,项目符号#2是为了抓住某人输入“.02”。
如果无效则请使用RegEx:"^[0-9]+\\.?[0-9]*$"
答案 1 :(得分:2)
我认为使用正则表达式会使答案复杂化。更简单的方法是使用indexOf()
和substring()
:
int index = mystring.indexOf(".");
if(index != -1) {
// Contains a decimal point
if (mystring.substring(index + 1).indexOf(".") == -1) {
// Contains only one decimal points
} else {
// Contains more than one decimal point
}
}
else {
// Contains no decimal points
}
答案 2 :(得分:2)
您可以使用indexOf()
和lastIndexOf()
:
int first = str.indexOf(".");
if ( (first >= 0) && (first - str.lastIndexOf(".")) == 0) {
// only one decimal point
}
else {
// no decimal point or more than one decimal point
}
答案 3 :(得分:1)
最简单
示例:强>
"123.45".split(".").length();
答案 4 :(得分:1)
如果你想检查一个数字(正数)是否有一个点,如果你想使用正则表达式,你必须转义点,因为点意味着“任何字符”:-)
请参阅http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
Predefined character classes
. Any character (may or may not match line terminators)
\d A digit: [0-9]
\D A non-digit: [^0-9]
\s A whitespace character: [ \t\n\x0B\f\r]
\S A non-whitespace character: [^\s]
\w A word character: [a-zA-Z_0-9]
\W A non-word character: [^\w]
所以你可以使用像
这样的东西System.out.println(s.matches("[0-9]+\\.[0-9]+"));
PS。这也将匹配01.1等数字。我只想说明\\。
答案 5 :(得分:0)
int count=0;
For(int i=0;i<mystring.length();i++){
if(mystring.charAt(i) == '/.') count++;
}
if(count!=1) return false;
答案 6 :(得分:0)
使用以下RegEx解决您的问题
允许2个小数位(例如0.00到9.99)
允许1个小数位(例如0.0到9.9)
^[0-9]{1}[.]{1}[0-9]{2}$
This RegEx states:
1. ^ means the string must start with this.
2. [0-9] accept 0 to 9 digit.
3. {1} number length is one.
4. [.] accept next character dot.
5. [0-9] accept 0 to 9 digit.
6. {2} number length is one.
答案 7 :(得分:0)
我创造自己来解决问题的确切问题。 我会和你们分享正则表达式:
^(\d)*(\.)?([0-9]{1})?$
看看这个Online Regex,看看是否正常工作
如果您希望继续自定义正则表达式,请参阅文档