проверка регулярных выражений - Grails - PullRequest
2 голосов
/ 24 февраля 2012

Я довольно новичок в Grails .. У меня сейчас есть небольшая проблема с проверкой соответствия.Я хотел, чтобы поле могло принимать комбинацию буквенно-цифровых и специальных символов, только букв и цифр, и если пользователь вводит только специальные символы, система должна выдавать пользователю ошибку.я использовал ограничения совпадений для проверки данных, и мне было трудно, как я могу установить регулярное выражение, где поле не будет принимать входные данные только со специальными символами.Пожалуйста, помогите мне .. большое спасибо за то, что поделились своими знаниями.

Ответы [ 2 ]

3 голосов
/ 24 февраля 2012

Мне кажется, я понимаю вашу проблему, но поправьте меня, если я ошибаюсь.Ввод действителен, если есть хотя бы одна буква или цифра, верно?Другими словами, если нет буквы или цифры (только специальные символы), то ввод неправильный?

Проверьте, работает ли это:

/^.*[A-Za-z0-9].*$/

Вот мой маленький клочоктест:

import java.util.regex.Matcher
import java.util.regex.Pattern

def pattern = ~/^.*[A-Za-z0-9].*$/

assert pattern.matcher("abc").matches()
assert pattern.matcher("ABC").matches()
assert pattern.matcher("abc123").matches()
assert pattern.matcher("123").matches()
assert pattern.matcher("abc!").matches()
assert pattern.matcher("!abc").matches()
assert pattern.matcher("1!bc").matches()
assert pattern.matcher("!.~").matches() == false

Объяснил:

/             regex start
^             start of string
.*            any character (0 or more times)
[A-Za-z0-9]   at least 1 letter or number
.*            any character (0 or more times)
$             end of string
/             regex end
1 голос
/ 24 февраля 2012

Я не знаю, поддерживает ли grails lookaround , но если это так, то это регулярное выражение будет работать для вас:

/(?=^[\pL\pN!:;]+$)(?!^[!:;]+$)/

Объяснение:

/                 : regex delimiter
  (?=             : begin positive lookahead
    ^             : start of string
    [\pL\pN!:;]+  : a letter, a digit or a special char one or more times
    $             : end of string
  )               : end of lookahead
  (?!             : begin negative lookahead
    ^             : start of string
    [!:;]+        : a special char one or more times
    $             : end of string
  )               : end of lookahead
/                 : regex delimiter
...