Опитвам се да конструирам регекс, който по същество позволява само числа с дължина 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}$";