尝试匹配时PHP正则表达式问题

时间:2018-03-31 11:14:28

标签: php regex

我在尝试使用php中的preg_match函数时遇到了问题,我一直在尝试检查从用户输入的表单提供的字符串的第一个字符,这是通过下面的代码检索的,我已经多次使用echo检查了什么是正在获取的内容,它似乎不是检索方面的问题,而是更多的preg_match。我一直在使用下面的代码检查第一个字符,以确保它是一个字母或撇号,每次模式包含'^'字符,它使整个匹配失败,我也在单独测试这个代码与其他匹配和相同的结果以失败告终,即使它应该工作。

//Code for retrieving name from input.
$name = $_POST['name'];

//Preg_match with conditional statement.
//testing that starting character either letter or apostrophe.
        //Condition 3, starts correctly
    if (preg_match("/^([a-zA-Z]|[\']).*/i", '$name')) {
        echo "Name Accepted. <br>";
        $validName = true;
    }else{
        $validName = false;
        echo "$name";
        echo "Name must start with letter or Apostrophe. <br>";
    }

以下是要检查的其他测试的示例:

$string = "9anny--";

if (preg_match("/^[0-9]/", '$string')) {
    echo "Name Accepted. <br>";
}else{
    echo "$string<br>";
    echo "Name must start with number. <br>";
}

随后输出:

输出:

9anny-- //回声测试输入结果没问题。

名称必须以数字开头。 //失败。

现在我担心我不能在不使用^的情况下检查第一个字符但是不管怎样都不应该有问题所以我想知道我的正则表达式语句有什么问题。

任何帮助或反馈都会令人惊讶和抱歉,如果这个问题是微不足道的,我对使用php和regex语句很新。我曾尝试在线使用资源,但如果它们包含^那么它意味着每次都会失败。

1 个答案:

答案 0 :(得分:-1)

不幸的是,对于你来说,这是其中之一&#34; well duh&#34;时刻。

'$name'完全是文字$name,而不是$name变量的内容。单引号字符串不会像双引号字符串那样插入变量。

如果您想使用变量值,请完全删除引号!