如何使用正则表达式来检查字符串是否是科学记数法?

时间:2016-01-31 21:31:23

标签: java regex pattern-matching

我想查看用户输入,我将以字符串形式获取并将其传递给数组!现在我想使用正则表达式来查看数字是否是科学记数法!我也想为八进制做同样的事情! 我在这里工作是为浮点而且它的工作完美但是对于科学记数法而且八进制没有实际工作不知道为什么! 我也可以使用模式编译!如果是啊怎么样!!

感谢您的帮助 这是检查浮点的工作

private static boolean floating(String [] data) {
    int count =0;
    boolean correct = false;
    for (int i = 0; i < data.length; i++) {

        if (str.matches("((-|\\+)?[0-9]+(\\.[0-9]+)?)+")){
            System.out.println(" it's a floating number ");
            correct= true;
            break;
         }else 
             correct = false;

    }if (correct ==true){
        return true;
    }else 
    return false; 

}

这是我的科学记数法的方法和表达。

    private void SNotation(String [] data) {
        int count =0;
    boolean correct = false;
    for (int i = 0; i < data.length; i++) {

        if (str.matches('(?<![\d.])(?!\.\.)(?<![\d.][eE][+-])(?<![\d.][eE])(?<!\d[.,])'){ 
/// here is not accepting the expression which i believe is right !! 
            System.out.println(" it's a floating number ");
            correct= true;
            break;
         }else 
             correct = false;

    }if (correct ==true){
        return true;
    }else 
    return false; 

for pattern compile i found these rules but dont know how should i use it ! 
  

十进制:(0 | [ - +]?[1-9] [0-9] )浮点数:[ - +]?[0-9] + \。[0-9] + $   科学记数法:[ - +]?[0-9] + \。[0-9]?[eE] [ - +]?[0-9] + $ Octal:   0 [0-7]

1 个答案:

答案 0 :(得分:0)

你可以只使用一个正则表达式。每个捕获组匹配不同的
类型。

"^(?:([+-]?(?:\\d+\\.\\d*|\\.\\d+))|(\\\\[0-7]+)|([+-]?\\d+)|([+-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)[eE][+-]?\\d+))$"

格式化

 ^ 
 (?:
      (                             # (1 start), Float
           [+-]? 
           (?:
                \d+ \. \d* 
             |  \. \d+ 
           )
      )                             # (1 end)
   |  
      ( \\ [0-7]+ )                 # (2), Octal
   |  
      (                             # (3 start), Integer
           [+-]? 
           \d+ 
      )                             # (3 end)
   |  
      (                             # (4 start), Scientific Notation
           [+-]? 
           (?:
                \d+ 
                (?: \. \d* )?
             |  \. \d+ 
           )
           [eE] [+-]? \d+ 
      )                             # (4 end)
 )
 $