2013-04-24 3 views
0

Мне нужно регулярное выражение для соответствия строк, которые могут быть маленькими буквами или цифрами, но должны содержать хотя бы одну маленькую букву.Регулярное выражение содержит

Таким образом, для ввода пробы:

a123 b123 123c C123 aaa AAA 1234 B123 1234 

матчей будет a123, b123, 123c и aaa.

Я думаю о выражении, как (\d*|[a-z]+)+, но не совсем. это будет включать 1234, а также незаконный, который я не хочу.

+0

Просьба указать длину и общий формат строки будет соответствовать. –

ответ

6

Я предполагаю, английский алфавит и цифры 0-9:

[a-z0-9]*[a-z][a-z0-9]* 

Как вы можете видеть:

  • Строка может содержать только либо строчные символы английского алфавита (a-z) или 0-9 цифр.
  • Строка должна иметь нижний регистр английского алфавита [a-z]. Остальные являются необязательными из-за * (0 или более квантификатор).
+0

@fardjad: Это так. Когда я перечитываю вопрос, единственное, что я пропустил, это то, что OP запрашивает только строчные символы. – nhahtdh

+0

+1, Извините, я просто пропустил [a-z] в первый – fardjad

+0

Это также будет соответствовать '11a11', OP, возможно, не захочет сопоставить это. –

1

попробовать что-то вроде этого:

/([a-z\d]*[a-z][a-z\d]*)/ 

Требуется по крайней мере одно маленькое письмо, а затем позволить 0 или более мелкими буквами и цифрами до или после него.

1

как насчет:

^(?=.*[a-z])[a-z\d]+$ 

объяснение:

The regular expression: 

(?-imsx:^(?=.*[a-z])[a-z\d]+$) 

matches as follows: 

NODE      EXPLANATION 
---------------------------------------------------------------------- 
(?-imsx:     group, but do not capture (case-sensitive) 
         (with^and $ matching normally) (with . not 
         matching \n) (matching whitespace and # 
         normally): 
---------------------------------------------------------------------- 
^      the beginning of the string 
---------------------------------------------------------------------- 
    (?=      look ahead to see if there is: 
---------------------------------------------------------------------- 
    .*      any character except \n (0 or more times 
          (matching the most amount possible)) 
---------------------------------------------------------------------- 
    [a-z]     any character of: 'a' to 'z' 
---------------------------------------------------------------------- 
)      end of look-ahead 
---------------------------------------------------------------------- 
    [a-z\d]+     any character of: 'a' to 'z', digits (0-9) 
          (1 or more times (matching the most amount 
          possible)) 
---------------------------------------------------------------------- 
    $      before an optional \n, and the end of the 
          string 
---------------------------------------------------------------------- 
)      end of grouping 
---------------------------------------------------------------------- 
Смежные вопросы