Подтвердить что ты не робот

Regex для указания пустой строки

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

4b9b3361

Ответ 1

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

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

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

Ссылки

Ссылки API


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

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

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

Если вам нужно использовать регулярное выражение в 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