变量里面正则表达式php

问题描述 投票:6回答:2

我坚持正则表达,我需要帮助。所以基本上我想做这样的事情:

$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寻求帮助

php regex variables
2个回答
17
投票

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

你有:

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

你应该有:

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

然后它工作得很好

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


1
投票

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

例如:

$nonWhiteSpace = "^\s";
$pattern = sprintf("/[%s]{1,10}/",$nonWhiteSpace);
var_dump($pattern); //gives you /[^\s]{1,10}/
© www.soinside.com 2019 - 2024. All rights reserved.