我正在尝试捕获字符串中的单词:
1vTvFpU
KOoy6Cc
使用正则表达式:
\b(?=(?:.*?[a-z]){1,})[A-Za-z0-9\/\-_.]{7,7}\b
但我有一个问题,因为它也匹配像:
这样的词FDSFDFI
WEWEFDP
RRRRRRR
字符串:
FDSFDFI sdfdfdf
WEWEFDP traliii
RRRRRRR sdfdfdf
我做错了什么?
答案 0 :(得分:1)
我建议您在前瞻中使用\S*
而不是.*
。因为当你在前瞻中包含.*?
时,它会检查整行的至少一个小写字母而不是单词。
\b(?=(?:\S*?[a-z]))[A-Za-z0-9\/\-_.]{7}\b
{7,7}
等于{7}
答案 1 :(得分:1)
不需要使用前瞻来做到这一点,字符类就足够了:
[^\Wa-z]*+\w+
然后用php检查字符串长度(例如用array_filter
)。