/ / Java Regex - не порожній рядок, тільки цифри, 8 символів довгі [закриті] - java, regex

Java Regex - не пуста рядок, тільки цифри, 8 символів довго [closed] - java, regex

Я намагаюся побудувати регулярний вираз, який, в основному, допускає лише цифри, довжину 8 символів і не може бути порожнім, тобто "" чи мати 8 пробілів

Мені вдалося отримати два окремі регулярні вирази, які майже зроблять те, що я мав після: ^ (? s * $). + який не допускає порожніх рядків, але дозволяє пробіл. Також: ^ [0-9] + $ що дозволяє шукати лише номери.

Я хотів би об'єднати ці вирази regex, а також і у пункті, щоб відповідати рядкам довжиною 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: Pshemo має день.


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

^ [d | s] {8} $

або в java ...

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