Регулярное выражение для указания пустой строки - PullRequest
17 голосов
/ 02 июля 2010

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

Ответы [ 4 ]

39 голосов
/ 02 июля 2010

Регулярное выражение ^$ соответствует только пустым строкам (то есть строкам длиной 0). Здесь ^ и $ - начало и конец якоря строки соответственно.

Если вам нужно проверить, содержит ли строка только пробелы, вы можете использовать ^\s*$. Обратите внимание, что \s является сокращением для класса символов пробела.

Наконец, в Java matches пытается сопоставить строку вся , поэтому вы можете опустить привязки, если захотите.

Ссылки

API ссылки


Решение без регулярных выражений

Вы также можете использовать String.isEmpty(), чтобы проверить, имеет ли строка длину 0. Если вы хотите увидеть, содержит ли строка только пробельные символы, тогда вы можете trim() сначала и , затем проверьте, не является ли это isEmpty().

3 голосов
/ 02 июля 2010

Я не знаю конкретно о Java, но ^$ обычно работает (^ соответствует только в начале строки, $ только в конце).

0 голосов
/ 24 июня 2019

Если вам нужно использовать регулярное выражение в Java для проверки пустой строки, вы можете использовать

 String testString = "";
 System.out.println(testString.matches(""));

или для проверки, если только пробелы:

String testString = "  ";        
testString.trim().matches("");

, но в любом случае используйте

testString.isEmpty();
testString.trim().isEmpty();

должно лучше совпадать с точки зрения производительности.

public class Main {

public static void main(String[] args) {

    String testString = "";

    long startTime = System.currentTimeMillis();
    for (int i =1; i <100000000; i++) {
        testString.matches("");
    }
    long endTime = System.currentTimeMillis();

    System.out.println("Total testString.matches execution time: " + (endTime-startTime) + "ms");


    startTime = System.currentTimeMillis();
    for (int i =1; i <100000000; i++) {
        testString.isEmpty();
    }
    endTime = System.currentTimeMillis();

    System.out.println("Total testString.isEmpty execution time: " + (endTime-startTime) + "ms");


}

}

Вывод:

C:\Java\java8\bin\java.exe
Total testString.matches execution time: 18776ms
Total testString.isEmpty execution time: 12ms
0 голосов
/ 02 июля 2010

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

во многих случаях пустая строка и ноль проверяются вместе для дополнительной точности.

как String.length> 0 && String! = Null

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