Php 最小1个字符,最小4个字符,最大50个字符

Php 最小1个字符,最小4个字符,最大50个字符,php,regex,pcre,Php,Regex,Pcre,我没有使用mb_strlen和preg_match,而是试图设计一个纯粹的正则表达式解决方案,这样我就可以通过管道将所有内容传递到函数来缩短代码 最小可能输入数字字符仅用于演示数量 1@1234 最大可能输入数字字符仅用于演示数量 123456789012345678901234567890123456789012345@1234 1@123456789012345678901234567890123456789012345678 而介于两者之间的一切123456790@123456789012

我没有使用mb_strlen和preg_match,而是试图设计一个纯粹的正则表达式解决方案,这样我就可以通过管道将所有内容传递到函数来缩短代码

最小可能输入数字字符仅用于演示数量

1@1234 最大可能输入数字字符仅用于演示数量

123456789012345678901234567890123456789012345@1234 1@123456789012345678901234567890123456789012345678 而介于两者之间的一切123456790@123456789012345678901234567890123456789 我设计的当前模式是^.{1,}?@.{4,}?$,但我不确定如何将字符总数限制为50个


我尝试过捕获和分组所有内容,例如^.{1,}.@.{4,}.${,50},[^.{1,}.{4,}.$]{,50},但这些显然不起作用。

您可以尝试在模式的开头添加一个否定的前瞻,断言总共出现的字符不超过50个:

^(?!.{51,}).{1,}?@.{4,}?$

负面展望?!。{51,}从字面上说,我们没有看到51个或更多的字符,这意味着存在50个或更少的字符。

您可以尝试在模式的开头添加一个否定的前瞻,该模式断言总共不超过50个字符:

^(?!.{51,}).{1,}?@.{4,}?$

负面展望?!。{51,}从字面上说,我们没有看到51个或更多的字符,这意味着存在50个或更少的字符。

我必须等待8分钟,才能标记为solvedMaybe,您可能会得到另一个答案。我建议的可能是最简单的方法,因为@与{1,}和{4,}组合在一起,所以模式必须至少有6个字符。负前瞻还确保总共不超过50个字符。你想要的实际行为是什么?没关系。我只是现在没想清楚。这暂时还可以。对不起,我只是现在想的不清楚。。。听起来像是我在周一的早上:-我要等8分钟才能标记为Solved可能你会得到另一个答案。我建议的可能是最简单的方法,因为@与{1,}和{4,}组合在一起,所以模式必须至少有6个字符。负前瞻还确保总共不超过50个字符。你想要的实际行为是什么?没关系。我只是现在没想清楚。这暂时还可以。对不起,我只是现在想的不清楚。。。听起来像是我在周一的早晨:-