Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在正则表达式中设置最大长度_Php_Regex_Pattern Matching_Preg Match - Fatal编程技术网

Php 在正则表达式中设置最大长度

Php 在正则表达式中设置最大长度,php,regex,pattern-matching,preg-match,Php,Regex,Pattern Matching,Preg Match,我一直在谷歌上搜索这个,寻找一个类似的例子。我需要使用以下正则表达式(有效),但将允许的字符数限制为20个: /^[A-Za-z0-9]+(?:[@_\-.][A-Za-z0-9]+)*$/ 问题是,唯一的例子是使用了一种更简单的匹配模式,而我在上面的例子中似乎无法模拟这种模式: e、 g/^.{1,35}$/用于验证长度: if (strlen($value) > 20) { // Too long } else { // OK, perform regex } 用

我一直在谷歌上搜索这个,寻找一个类似的例子。我需要使用以下正则表达式(有效),但将允许的字符数限制为20个:

/^[A-Za-z0-9]+(?:[@_\-.][A-Za-z0-9]+)*$/
问题是,唯一的例子是使用了一种更简单的匹配模式,而我在上面的例子中似乎无法模拟这种模式:

e、 g/^.{1,35}$/

用于验证长度:

if (strlen($value) > 20)
{
    // Too long
}
else 
{
    // OK, perform regex
}
用于验证长度:

if (strlen($value) > 20)
{
    // Too long
}
else 
{
    // OK, perform regex
}

我认为您希望允许的字符长度为1到20。如果是,那么您可以尝试下面的正则表达式

^(?=.{1,20}$)[A-Za-z0-9]+(?:[@_\-.][A-Za-z0-9]+)*


(?=.{1,20}$)
首先肯定的前瞻性断言字符长度必须是1到20。

我认为您想要允许的字符长度应该是1到20。如果是,那么您可以尝试下面的正则表达式

^(?=.{1,20}$)[A-Za-z0-9]+(?:[@_\-.][A-Za-z0-9]+)*


(?=.{1,20}$)
第一个正向前瞻断言字符长度必须在1到20之间。

@wavemode将第一个匹配限制为一个字符,然后确保第二个匹配的长度在0到19之间:

在2和第一个符号之间添加alphanum重复

/^[A-Za-z0-9](?:[A-Za-z0-9]*[@_\-.][A-Za-z0-9]+){0,19}$/

@wavemode将第一个匹配限制为一个字符,然后确保第二个匹配的长度介于0和19之间:

在2和第一个符号之间添加alphanum重复

/^[A-Za-z0-9](?:[A-Za-z0-9]*[@_\-.][A-Za-z0-9]+){0,19}$/

是否允许使用单个字符?最少和atmost字符长度是多少?您需要吗?为什么不单独检查长度?是否允许使用单个字符?最少和atmost字符长度是多少?您需要吗?为什么不单独检查长度?…这是一个选项,但在我的代码上下文中,对regex模式的修改似乎更整洁:)…这是一个选项,但在我的代码上下文中,对regex模式的修改似乎更整洁:)