变量里面正则表达式php

时间:2014-09-12 17:51:32

标签: 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, '. $number .'}$/';

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

但是没有得到正确的结果。

Tnx寻求帮助

2 个答案:

答案 0 :(得分:17)

在第一个例子中,你有空间,你不应该有一个,

你有:

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

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

然后它工作得很好

更新:你在第二个例子中有同样的错误 - 感谢AbraCadaver

答案 1 :(得分:1)

在正则表达式中使用变量的另一种方法是使用sprintf。

例如:

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