如何确保字符串只是任何长度的两倍?

时间:2009-10-28 15:49:02

标签: java

我需要一个正则表达式,我认为看一个字符串是否只是一个双字符,但它可以是任何长度,任何建议?

6 个答案:

答案 0 :(得分:5)

您是否可以尝试将字符串转换为double,如果失败则捕获异常?

try{
  Double aDouble = Double.parseDouble(aString);
}catch (NumberFormatException nfe){
// handle it not being a Double here
}

答案 1 :(得分:3)

双精度匹配以下正则表达式:

^[-+]?\d*\.?\d+([eE][-+]?\d+)?$

请注意,对于Java String,您需要转义反斜杠,而\d[0-9]的简写。

答案 2 :(得分:0)

尝试^(\d+|\d+\.|\d*\.\d+)[dD]?$

答案 3 :(得分:0)

如果我正确理解你的意思,这个正则表达式可能会起作用

"/^[+-]?\d+\.\d+$/"

英文 - > A +或 - 符号(可能)后跟一个或多个数字后跟a。 (小数点)后跟一个或多个数字。此正则表达式假定数字未使用逗号格式化,并假设小数点分隔符是一个在所有语言环境中都不为真的点。

答案 4 :(得分:0)

我从perldoc faq4偷走了这个表达式 - “是一个十进制数字。”

import java.util.regex.Pattern;

    public class Test {

        public static void main(String[] args) {
            Pattern pattern = 
                Pattern.compile("^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)$");

            System.out.println(((Boolean) pattern.matcher("1").find()).toString());
            System.out.println(((Boolean) pattern.matcher("1.1").find()).toString());
            System.out.println(((Boolean) pattern.matcher("abc").find()).toString());


        }

    }

打印:

true
true
false

答案 5 :(得分:0)