preg_match('/ [a-z0-9 \ - ] + / i',$ u)$ Sign

时间:2013-03-23 18:59:38

标签: php preg-match

当我提交此表格时,我不断得到一个不应该做的比赛。我知道这与美元符号有关,但我无法解决这个问题,而且我似乎无法在Google上找到合适的答案。

<?php
if ( isset( $_POST['test'] ) ) {
    $u = $_POST['test'];
    echo preg_match('/[a-z0-9\-]+/i', $u);
}
?>

<form method="post">
    <input type="text" name="test" value="12$abc213">
    <button type="submit">Submit</button>
</form>

3 个答案:

答案 0 :(得分:3)

应该是

preg_match('/^[a-z0-9\-]+$/i', $u)

答案 1 :(得分:2)

您必须匹配字符串的开头和结尾,否则它将与匹配的子字符串一起传递:

preg_match('/^[a-z0-9\-]+$/i', $u);

答案 2 :(得分:2)

你的preg_match正在寻找匹配因为'1'是匹配,'2'是匹配,'abc213'是匹配,'a'是匹配等等。你想确定整个字符串匹配吗?然后尝试这种模式:

preg_match("/^[a-z0-9\-]+$/i", $u);

将表达式包装在^ .. $中意味着它必须以该序列开始和结束。这将不匹配,除非字符串中的所有字符都与此模式匹配,如果字符串中的任何“字符序列”与模式匹配,则您的匹配将匹配。