定期匹配至少一个字母的字符串,所有字符应为小写

时间:2017-10-09 09:38:16

标签: java regex

我是正则表达的新手。我正在寻找有效的方法来编写正则表达式来匹配至少有一个字母的字符串,所有字符都应该是小写

Ex-
 test->true
 tesT->false
 test123->true
 test@#$->true
 ABC->false
 teST123->false

请帮我解决这个问题。

提前致谢。

4 个答案:

答案 0 :(得分:2)

我认为您正在寻找的是:

^[^A-Z]*[a-z]+[^A-Z]*$

与此匹配的字符串必须包含至少一个小写字母且不能包含大写字母。

^和$强制正则表达式匹配整个字符串(而不仅仅是一个部分)。 [^ A-Z] *表示空字符串或不包含大写字母的字符串。这两侧合并到[a-z] +,这是一个包含一个或多个小写字母的字符串。

答案 1 :(得分:1)

试试这个正则表达式:

^(?=[^A-Z]+$)(?=[^a-z]*[a-z]).*$

Click for Demo

<强>解释

  • ^ - 断言字符串的开头
  • (?=[^A-Z]+$) - Positive lookahead验证测试字符串中是否存在大写字母,直到字符串结尾
  • (?=[^a-z]*[a-z]) - 确认至少有一个小写字母a-z
  • 的正面预测
  • .* - 匹配除换行符之外的任何字符的0+次出现。这与上述两个条件一起使用。
  • $ - 断言字符串的结尾

答案 2 :(得分:0)

这应该按照你的要求进行

[a-z]+

答案 3 :(得分:0)

try this

import re
list1 = ['test','tesT','test123','test@#$','ABC','teST123']
for word in list1:
    matchtext = re.match("(^[^A-Z]+$)",word)
    print(matchtext)

output:
<_sre.SRE_Match object; span=(0, 4), match='test'>
None
<_sre.SRE_Match object; span=(0, 7), match='test123'>
<_sre.SRE_Match object; span=(0, 7), match='test@#$'>
None
None