Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php preg_match函数转义撇号化_Php_Php 7.2 - Fatal编程技术网

php preg_match函数转义撇号化

php preg_match函数转义撇号化,php,php-7.2,Php,Php 7.2,在php中,我以如下方式验证字符串: 至少在字符长度上 仅包含字母数字加上破折号、下划线和美元符号(-\u$) 因此,我的结果代码是: if(!preg_match("/[a-zA-Z0-9\-_\$]+/", $input)) abort(400); // else continues 这是很好的工作,除了撇号字符的“如果字符串包含这两个字符中的一个,则应该验证失败,但实际情况并非如此。我认为我的正则表达式模式没有很好的结构,但我在这里找不到问题。您只检查字符串中是否存在字符(

在php中,我以如下方式验证字符串:

  • 至少在字符长度上
  • 仅包含字母数字加上破折号、下划线和美元符号(-\u$)
因此,我的结果代码是:

if(!preg_match("/[a-zA-Z0-9\-_\$]+/", $input))
     abort(400);
// else continues

这是很好的工作,除了撇号字符的“如果字符串包含这两个字符中的一个,则应该验证失败,但实际情况并非如此。我认为我的正则表达式模式没有很好的结构,但我在这里找不到问题。

您只检查字符串中是否存在字符(在本例中是
Hello
)。您需要使用字符串的beginn(
^
)和end(
$
)进行正则表达式:

if (!preg_match("/^[a-zA-Z0-9\-_$]+$/", 'Hello"')) {
   abort(400);
} else {
    //continues
}
演示:


我是否应该转义方括号内的
$

在这种情况下,您不需要使用
\
来转义
$
。如果需要正则表达式字符作为字符而不是正则表达式字符,则可以始终转义它们:
\+*?[ ^ ] $ ( ) { } = ! < > | : -

尝试以下方法:

preg_match("/^[a-zA-Z0-9\-_\$]+$/", $input);

[a-zA-Z0-9-$]+
顺便说一句,我是否应该转义方括号内的
$
?您不需要转义
$
。有或没有逃逸没有区别(在这种情况下)。