Шаблон RegExp для строки, которая содержит 0 и 4-9 (4, 5,6,7,8,9) - PullRequest
0 голосов
/ 15 октября 2018

Я имею дело со строкой.Сценарий использования: я не хочу строку, в которой есть числа от 4 до 9 и 0.

Пример: -

ABC0123-> Not Valid.
XYZ002456789->Not Valid.
ABC123->Valid
ABC1->Valid

Я пробовал приведенный ниже шаблон, но не получил успехав нем.

String pattern = "^[0,4-9]+$"; 
if(str.matches(pattern)){
      //do something.
}

Ответы [ 3 ]

0 голосов
/ 15 октября 2018

Гораздо проще сопоставить те, которые содержат 4-9 и 0, чем те, которые не содержат.Таким образом, вы должны просто написать регулярное выражение, как это:

[4-90]

И вызвать find, а затем инвертировать результат:

if (!Pattern.compile("[4-90]").matcher(someString).find()) {
    // ...
}
0 голосов
/ 15 октября 2018

Другим вариантом может быть использование отрицательного класса символов и добавление того, что вы не хотите сопоставлять.В этом случае вы можете добавить 0 и диапазон от 4 до 9, а если вы не хотите совпадать с переводом каретки или переводом новой строки, вы также можете добавить их.

^[^04-9\\r\\n]+$

Обратите внимание: если вы добавите запятую в класс символов, это будет означать запятую буквально.

Regex demo | Java-демо

String pattern = "^[^04-9\\r\\n]+$";
if(str.matches(pattern)){
    //do something.
}
0 голосов
/ 15 октября 2018

Сначала удалите запятую из класса персонажей.Вы не ищете запятые.

Поскольку вы запрещаете , не привязывайте выражение, разрешите совпадение в любом месте строки.Фактически, matches привязывает выражение для вас, поэтому мы должны преднамеренно разрешить символы до и после запрещенного класса символов:

String pattern = ".*[04-9].*";
if(str.matches(pattern)){
      // disallow
}

Live Example

Кроме того, вы можете избежать использования этих .*, используя Pattern.compile, а затем использовать Pattern вместо matches, так как он не будет автоматически привязывать шаблон, как matches.

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