Php 在正则表达式中设置最大长度
我一直在谷歌上搜索这个,寻找一个类似的例子。我需要使用以下正则表达式(有效),但将允许的字符数限制为20个: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 } 用
/^[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模式的修改似乎更整洁:)