Я использую валидатор, который требует указания регулярного выражения. В случае проверки на пустую строку я не знаю, как создать такое регулярное выражение. Какое регулярное выражение можно использовать для соответствия пустой строке?
Regex для указания пустой строки
Ответ 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