我正在使用 preg_match 验证输入:
$string = 'test';
if (preg_match ('/[^-a-z\d]/i', $string))
{
return true;
}
else
{
return false;
}
好吧,我无法理解为什么它会在这里返回 false !
我错过了什么吗?
不应该返回 true ?
解决方案:
(preg_match ('/^[-a-z\d]*$/i', $string))
答案 0 :(得分:1)
Tyr this
{
"apps":[
...
"environmentSource": "environments/environment.ts",
"environments": {
"dev": "environments/environment.ts",
"staging": "environments/environment.staging.ts",
"prod": "environments/environment.prod.ts"
}
]
}
答案 1 :(得分:1)
因此preg_match()
可以返回0
,1
或false
严格检查结果是否等于1
可能更安全,即< / p>
abstract class Pattern
{
/** @const int */
const TEXT_MATCH = 1;
/**
* @param string $pattern regex pattern to match against
* @param string $string the text string to search
*
* @return bool
*/
public static function match(string $pattern, string $string): bool
{
return preg_match($pattern, $string) === self::TEXT_MATCH;
}
}
主要是你感兴趣的是这个
preg_match($pattern, $string) === 1;
如果您随后使用它:
$result = Pattern::match('/[^-a-z\d]/i', 'test');
var_dump($result); // false
字符串没有通过检查。如果这还没有解决您的问题,我们需要查看一些您经过的字符串示例,这些字符串总是会通过。它可能也值得解释你希望正则表达式匹配的内容,因为这也可能是问题的一部分。