Проверьте, нет ли в строке алфавитов - PullRequest
3 голосов
/ 03 июня 2019

Я пытаюсь найти, содержит ли строка только цифры и специальные символы.

Я пробовал код ниже, но он не работает

String text="123$%$443";
String regex = "[0-9]+";
String splChrs = "-/@#$%^&_+=()" ;
if ((text.matches(regex)) && (text.matches("[" + splChrs + "]+"))) {
  System.out.println("no alphabets");
}

Ответы [ 4 ]

8 голосов
/ 03 июня 2019

Просто исключите использование ^ букв алфавита:

[^a-zA-Z]+

См. demo

3 голосов
/ 03 июня 2019

Если вы хотите проверить, что text не содержит букв [A-Za-z], попробуйте это:

if (!text.matches("[A-Za-z]+")) {
  System.out.println("no letters");
}

Если вы хотите проверить, что text содержит только цифры и заданные специальные символы , попробуйте это:

String regex = "[0-9\\-/@#$%^&_+=()]+";
if (text.matches(regex)) {
  System.out.println("no letters");
}

Обратите внимание, что - должен быть заменен на \, который сам должен быть экранирован.

1 голос
/ 03 июня 2019

Вот несколько решений, которые могут работать для различных требований:

В тексте не должно быть букв только ASCII

if (text.matches("\\P{Alpha}+")) {
  System.out.println("No ASCII letters");
}

В тексте не должно бытьписьмо со всей плоскости BMP

if (text.matches("\\P{L}+")) {
  System.out.println("No Unicode letters");
}

Текст не должен содержать буквенных символов

if (text.matches("\\P{IsAlphabetic}+")) {
  System.out.println("No alphabetic chars");
}

* Примечание: *Класс 1020 * включает в себя категории L, Nl (номер буквы) и Other_Alphabetic и может быть слишком широким, но это хорошо, если вам нужно проверить наличие букв и диакритических знаков.

Метод String#matchesтребуется полное совпадение строки, поэтому в приведенных выше фрагментах кода якоря (^ / \A и $ / \z) не используются.

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

в регулярном выражении Java 'match' и 'find' - это разные методы. Если ваша строка содержит только буквы, которые вы хотите найти, используйте 'find'. Или, если вы хотите соответствовать всей строке, используйте 'match'

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