регулярное выражение, чтобы не допускать непрерывных символов без пробела - PullRequest
1 голос
/ 29 мая 2020

Привет, я пытаюсь запретить непрерывные символы без пробела, предполагая, что максимальная длина слова может составлять 25 символов.

Разрешено -> привет, как дела, у меня все в порядке "dfsdfsd '" () sdfnjsd. fhhdfbsdfbdhhbdhfb.

Not Allowed-> привет, привет, "() # jsdfhsdjfhjshdasdjasjdd34! fsdfsdfsddfsdfsdff * &

* 10010 * 10 * Что я * пробовал только буквы и цифры c и некоторые специальные символы
^[a-zA-Z0-9 ,()!'".\-_:/\\-]*$ 

, но не знаю, как найти непрерывные слова длиной более 25 символов без пробелов

Ответы [ 2 ]

1 голос
/ 30 мая 2020

Добавьте отрицательный прогноз для 26 символов без пробелов, которые привязаны к началу:

^(?!.*\S{26})[a-zA-Z0-9 ,()!'"._:/\\-]*$

Символ дефиса - дважды был в вашем классе символов; в этом регулярном выражении один из них удален.

1 голос
/ 30 мая 2020

Вы можете проверить, содержит ли строка 26 последовательных непробельных символов (с \S{26} регулярным выражением), и если да, вернуть false, иначе вернуть true.

val s = """hi there how are you i'm fine over here "dfsdfsd'"()sdfnjsd. fhhdfbsdfbdhhbdhfb."""
println(!"""\S{26}""".toRegex().containsMatchIn(s)) // => true

val s2 = """hi there howareyou, "()#jsdfhsdjfhjshdasdjasjdd34!fsdfsdfsddfsdfsdff*&"""
println(!"""\S{26}""".toRegex().containsMatchIn(s2)) // => false

The .containsMatchIn ищет совпадение с шаблоном в любом месте всей входной строки.

Вы можете дополнительно уточнить шаблон.

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