Php 正则表达式捕获字母和数字序列,但至少包含3个字母?如何做?
我必须用PHP做一个正则表达式,它在文本中捕获只包含大写字母、数字或下划线的字符串。 例如:Php 正则表达式捕获字母和数字序列,但至少包含3个字母?如何做?,php,regex,Php,Regex,我必须用PHP做一个正则表达式,它在文本中捕获只包含大写字母、数字或下划线的字符串。 例如:这个东西,这个东西,一个以上的东西等。 它在以下情况下运行良好:/[A-Z0-9\]/ 但是,我只想捕捉以下序列: -最少5个字符==>/[A-Z0-9]{5,}/ -并且至少包含3个大写字母==> 你有什么想法吗 谢谢 并且至少包含3个大写字母==> 为此,请在开始时使用 ^(?=(?:[^A-Z\n]*[A-Z]){3})[A-Z0-9_]{5,}$ 或 谢谢!我要试试。请再检查一下正则表达式。我再
这个东西
,这个东西
,一个以上的东西
等。它在以下情况下运行良好:
/[A-Z0-9\]/
但是,我只想捕捉以下序列:-最少5个字符==>
/[A-Z0-9]{5,}/
-并且至少包含3个大写字母==> 你有什么想法吗 谢谢 并且至少包含3个大写字母==> 为此,请在开始时使用
^(?=(?:[^A-Z\n]*[A-Z]){3})[A-Z0-9_]{5,}$
或
谢谢!我要试试。请再检查一下正则表达式。我再检查一下,但这不是我需要的。如果你看这里(),你会发现你的正则表达式捕获了不应该被捕获的字符串。。。无论如何谢谢你@DamFa在求反类中添加换行符,因为您希望匹配没有换行符的字符串,所以在求反类中不需要
\n
。这就是为什么我不想把它放在否定的char类中。而且TES_123
也是一个匹配项,因为它至少包含3个大写字母和
数字。总长度大于5。满意。嗯。。。什么样的“换行符”可以改变这个问题?我不想捕捉像“123456”这样的字符串,正则表达式无论如何都会捕捉到它?不
\b(?=(?:[^A-Z]*[A-Z]){3})[A-Z0-9_]{5,}+\b