/ / Java Regex - Не е празен низ, но само числа, 8 символа дълго [затворен] - java, regex

Java Regex - Не е празен низ, само числа, 8 символа дълъг [затворен] - java, regex

Опитвам се да конструирам регекс, който по същество позволява само числа с дължина 8 знака и не може да бъде празен, т.е. "" или да има 8 празни интервали

Аз бях в състояние да получи две отделни regex, че ще направи почти това, което съм след: ^ (?! е * $) +. който не позволява празни струни, но позволява бяло пространство. Също: ^ [0-9] + $ което ми позволява да търся само номера.

Бих искал да комбинирам тези регенерирани изрази, както и в клауза, която да съответства на струни с дължина 8 символа.

Някакви съвети за това как мога да съчетая това, което имам досега?

Отговори:

6 за отговор № 1

Просто място ^(?!s*$) в началото на вашия регекс. Опитайте по този начин ^(?!s*$)[0-9s]{8}$?

  • ^(?!s*$) както знаете, ще провери дали целият низ не е само бели полета
  • [0-9s] ще съответства на всяка цифра и бяло пространство
  • {8} означава точно 8 случая на елемент преди него (в нашия случай цифра или бяло пространство)

2 за отговор № 2

Не можем наистина да разберем как низът може да бъде 8 знака и да съдържа само цифри и да е празно, но за съвпадение само на 8 цифри опитайте този:

^d{8}$

1 за отговор № 3

Можете да зададете количествен израз, който да гарантира, че моделът ви ще съответства на определен брой цифри, както е така: ^[0-9]{8}$.

Редактиране: Хм, преди да разбера частта за бялото пространство. Добре ли е да има бяло пространство в рамките на низа, за да се съчетае, или просто около него? Ако първата, ще трябва да ремонтирам моя отговор. Ако последният отпада ^ и $.

Редактиране v2: Псхемо има ден.


0 за отговор № 4

Първо направете проверка на дължината на низа, за да видите дали е по-дълъг;

След това отрежете (за да премахнете интервалите в началото и края) и да съвпадате с d+(s+d+)*:

// No need to anchor the regex since we use .matches()
return input.length() == 8 && input.trim().matches("\d+(\s+\d+)*");

0 за отговор № 5

^ [Г | а] {8} $

или в Java ...

String re = "^[\d|\s]{8}$";