regex 正则表达式中的变量

n53p2ov0  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(175)

我被正则表达式卡住了,我需要帮助。所以基本上我想这样做:

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

7uzetpgm

7uzetpgm1#

在第一个例子中,你有一个额外的空间,你不应该有一个。
此外,你应该总是引用这样的变量,因为它可能包含regex识别的特殊字符。你应该有:

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

那就没问题了

rbl8hiat

rbl8hiat2#

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

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

相关问题