Использование string.all с регулярным выражением - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь проверить, есть ли в строке все запрещенные символы, такие как "/ # $% ^ &" ... я пытался найти решение, но ничего не смог найти, я просто хочу проверить, все ли символы вшаблон регулярного выражения совпадения строк \ w

string.all кажется идеальным, но я не могу добавить шаблон регулярного выражения к нему, вот что я пытаюсь сделать:

 // "abce#ios" must return false because it contains #
 // "abcdefg123" must return true 

fun checkForChars(string :String) :Boolean {
    val pattern = "\\w".toRegex()
   return (string.contains(regex = pattern))
}

заранее спасибо

Ответы [ 3 ]

2 голосов
/ 03 октября 2019

Вам вообще не нужно использовать регулярные выражения с all:

fun checkForChars(string: String): Boolean = string.all(Char::isLetterOrDigit)
1 голос
/ 03 октября 2019

Вы можете использовать Regex("[^/#$%^&]*").matches(string) для проверки запрещенных символов.

Вы можете включить любые запрещенные символы в конструкцию [^...]*. Хотя символ " должен быть экранирован, а символ \ - дважды. Regex("[^\\\\/#$%^&\"]*").

Для \\w* регулярных выражений вы можете использовать Regex("\\w*").matches(string)

1 голос
/ 03 октября 2019

Вы допустили несколько ошибок:

  1. \w шаблон соответствует ровно одной букве, если вы хотите найти ноль или более букв, вам нужно изменить его на: \w*
  2. Вместо того, чтобы проверять, содержит ли строка регулярное выражение, вам нужно проверить, соответствует ли оно регулярному выражению.

Окончательное решение следующее:

fun checkForChars(string :String) :Boolean {
    val pattern = "\\w*".toRegex()
   return (string.matches(pattern))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...