检查所有字母在String中至少出现一次

时间:2015-09-15 05:42:33

标签: java regex string matcher

我正在使用此正则表达式检查每个字母是否至少出现一次:

String regex = "(?i)(?=.*a)(?=.*b)(?=.*c)(?=.*d)(?=.*e)(?=.*f)(?=.*g)(?=.*h)(?=.*i)(?=.*j)(?=.*k)(?=.*l)(?=.*m)(?=.*n)(?=.*o)(?=.*p)(?=.*q)(?=.*r)(?=.*s)(?=.*t)(?=.*u)(?=.*v)(?=.*w)(?=.*x)(?=.*y)(?=.*z).*
"

示例:

  

快速的棕色狐狸跳过懒狗

包含所有英文字母,但我的正则表达式无效。

我做错了什么,或者还有其他方法来检查pangrams

2 个答案:

答案 0 :(得分:2)

有一种比正则表达式更简单快捷的方法来检查字符串是否为pangram。

小步骤,

  • 将字符串转换为小写
  • 将其减少为独特的字母
  • 排序
  • 是否等于"abcdefghijklmnopqrstuvwxyz"

答案 1 :(得分:1)

    (?i)^(?=.*a)(?=.*b)(?=.*c)(?=.*d)(?=.*e)(?=.*f)(?=.*g)(?=.*h)(?=.*i)(?=.*j)(?=.*‌​k)(?=.*l)(?=.*m)(?=.*n)(?=.*o)(?=.*p)(?=.*q)(?=.*r)(?=.*s)(?=.*t)(?=.*u)(?=.*v)(?‌​=.*w)(?=.*x)(?=.*y)(?=.*z).*$

添加anchors ^$以进行严格匹配,而不是部分匹配。

参见演示。

https://regex101.com/r/vV1wW6/11