Как сделать так, чтобы строка была только двойной длины любой длины? - PullRequest
0 голосов
/ 28 октября 2009

Мне нужно регулярное выражение, я думаю, чтобы увидеть, является ли строка только двойной, но она может быть любой длины, любые предложения?

Ответы [ 6 ]

5 голосов
/ 28 октября 2009

Не могли бы вы попытаться преобразовать строку в двойное и перехватить исключение, если оно не выполнится?

try{
  Double aDouble = Double.parseDouble(aString);
}catch (NumberFormatException nfe){
// handle it not being a Double here
}
3 голосов
/ 28 октября 2009

Двойник будет соответствовать следующему регулярному выражению:

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

Обратите внимание, что для строки Java вам необходимо избегать обратной косой черты, а \d является сокращением для [0-9].

0 голосов
/ 27 октября 2012

Вы также можете посмотреть на NumberUtils от Apache Commons

http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/math/NumberUtils.html

0 голосов
/ 28 октября 2009

Я украл это выражение из 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
0 голосов
/ 28 октября 2009

Если я правильно понял ваше значение, это регулярное выражение может сработать

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

На английском языке -> знак + или - (возможно), за которым следуют одна или несколько цифр, за которыми следует буква a. (десятичная точка), за которой следуют одна или несколько цифр. Это регулярное выражение предполагает, что числа не отформатированы запятыми, а также предполагает, что десятичный разделитель является точкой, которая не соответствует действительности во всех локалях.

0 голосов
/ 28 октября 2009

Попробуйте ^(\d+|\d+\.|\d*\.\d+)[dD]?$

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...