复杂的正则表达式匹配查询?

时间:2018-10-26 16:05:36

标签: php regex

任务是确定必须满足条件strpos( $key, 'R_4r3@')!== FALSE并同时满足正则表达式条件/^-?[a-z0-9]+$/m并输出成功作为输出的键字符串。

问题源代码:

<?php

$key=$_POST['key'];
if (strpos( $key, 'R_4r3@')!== FALSE){
    if (!preg_match('/^-?[a-z0-9]+$/m', $key)) {
        die('ILLEGAL CHARACTERS');
    }
echo 'success';
} else {
    echo 'Wrong Password';
} ?>

尝试解决方案:

-?表示密钥在密钥开头可以包含- 0或1次。 [a-z0-9]+所有小写字母和数字出现1次或多次。 在前一种情况下确定的$元素应该是最后一个元素。 可能需要逃避条件,但不知道如何进行。

1 个答案:

答案 0 :(得分:2)

-a2c\nR_4r3@解决了您的问题。

  • strpos返回TRUE,因为密钥中存在R_4r3@
  • preg_match返回TRUE,因为第一行仅包含字母数字

$key = "-a2c\nR_4r3@";
if (strpos( $key, 'R_4r3@')!== FALSE){
    if (!preg_match('/^-?[a-z0-9]+$/m', $key)) {
        die('ILLEGAL CHARACTERS');
    }
    echo 'success';
} else {
    echo 'Wrong Password';
}

输出:

success