正则表达式捕获至少有一个小写字母的单词

时间:2015-03-22 13:28:00

标签: php regex

我正在尝试捕获字符串中的单词:

1vTvFpU
KOoy6Cc

使用正则表达式:

\b(?=(?:.*?[a-z]){1,})[A-Za-z0-9\/\-_.]{7,7}\b

但我有一个问题,因为它也匹配像:

这样的词
FDSFDFI
WEWEFDP
RRRRRRR

字符串:

FDSFDFI sdfdfdf
WEWEFDP traliii
RRRRRRR sdfdfdf

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我建议您在前瞻中使用\S*而不是.*。因为当你在前瞻中包含.*?时,它会检查整行的至少一个小写字母而不是单词。

\b(?=(?:\S*?[a-z]))[A-Za-z0-9\/\-_.]{7}\b

{7,7}等于{7}

DEMO

答案 1 :(得分:1)

不需要使用前瞻来做到这一点,字符类就足够了:

[^\Wa-z]*+\w+

然后用php检查字符串长度(例如用array_filter)。