正则表达式php中的变量

正则表达式php中的变量,php,regex,variables,Php,Regex,Variables,我一直在学习正则表达式,我需要帮助。 所以基本上我想做这样的事情: $data = "hi"; $number = 4; $reg = '/^[a-z"]{1,4}$/'; if(preg_match($reg,$data)) { echo 'Match'; }else { echo 'No match'; } 但我想使用变量 $reg = '/^[a-z"]{1, variable here }$/'; 我试过: $reg = '/^[a-z"]{1, '. $

我一直在学习正则表达式,我需要帮助。 所以基本上我想做这样的事情:
$data = "hi";
$number = 4;

$reg = '/^[a-z"]{1,4}$/';


if(preg_match($reg,$data)) {
    echo 'Match';   
}else {
    echo 'No match';
}
但我想使用变量

$reg = '/^[a-z"]{1, variable here }$/';
我试过:

$reg = '/^[a-z"]{1, '. $number .'}$/';

$reg = "/^[a-z\"]{1, $number}$/";
但是没有得到正确的结果


Tnx帮助

在第一个示例中,您有不应该有的空间

你有:

$reg = '/^[a-z"]{1, '. $number .'}$/';
你应具备:

$reg = '/^[a-z"]{1,'. $number .'}$/';
那就好了


更新:在第二个示例中也有相同的错误-多亏了AbraCadaver,在正则表达式中使用变量的另一种方法是使用sprintf

例如:

$nonWhiteSpace = "^\s";
$pattern = sprintf("/[%s]{1,10}/",$nonWhiteSpace);
var_dump($pattern); //gives you /[^\s]{1,10}/

在第一个示例中,您使用的是单引号,这会阻止PHP将您的变量解析为变量。@AlexW-他使用了哪些引号并不重要,因为他将字符串拆分为两部分,并通过
添加
$number
operator@Drecker我指的是上面的例子。他把
变量放在这里的地方
@abracadver-谢谢,我编辑了答案,所以它会更明显。我有一个问题,当我尝试把变量放在里面时,它不起作用,但是当我把文本从变量放在正确的位置时,它非常有效。