Регулярное выражение Java - PullRequest
1 голос
/ 31 марта 2011

Мне нужно убедиться, что моя строка содержит 1 или более цифр и 1 или более буквенных символов.Эта строка также может содержать другие символы, такие как @ # $ %% #.и т.д. Есть идеи?

Ответы [ 5 ]

1 голос
/ 31 марта 2011

Вы можете проверить это в Java с помощью следующего кода:

if (input.matches("(?=.*\\d)(?=.*\\p{L}).+") {
  // match
}

Он проверяет, что это хотя бы одна цифра и хотя бы одна буква юникода. Использует позитивный взгляд.

1 голос
/ 31 марта 2011

Не используйте регулярные выражения для чего-то подобного - напишите валидатор:

public boolean validate(String val) {
    int len=val.length();

    if(len>=8) {
        boolean alp=false,dgt=false;
        for(int xa=0; xa<len; xa++) {
            char chr=val.charAt(xa);
            alp|=Character.isLetter(chr);
            dgt|=Character.isDigit (chr);
            if(alp && dgt) { return true; }
            }
        }
    return false;
    }
1 голос
/ 31 марта 2011

Если под цифрами вы подразумеваете цифры, то вы можете попробовать \A(?.*\d.*[a-zA-Z].*|.*[a-zA-Z].*\d.*)\z

По сути, это соответствует одному из следующих:

  • любые символы (или ни одного), за которыми следуют цифра, затем любые символы (или ни одного), за которыми следует буква, за которой следуют любые символы (или ни одного)
  • любые символы (или ни одного), за которыми следует буква, за которыми следуют любые символы (или ни одного), за которыми следует цифра, за которой следуют любые символы (или ни одного)

Не забудьте удвоить обратную косую черту в строках шаблона:)

Вы также можете сделать так, чтобы он также совпадал с числами в целом (т.е. не только с цифрами), заменив \d подходящим регулярным выражением, но что это на самом деле является регулярным выражением, зависит от того, что вы пытаетесь сопоставить - больше информации было бы полезно .

0 голосов
/ 31 марта 2011
\d.*[a-zA-Z]|[a-zA-Z].*\d

вам не нужно проверять, что находится перед вашей первой буквой или цифрой, а также что стоит после вашей последней буквы / цифры

0 голосов
/ 31 марта 2011

^(?=.*\d)(?=.*\D).{8,}$ - соответствует строке с 8 или более символами и содержит по меньшей мере одно число и по меньшей мере один нечисловой символ.

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