gpt4 book ai didi

php - 如何使用 preg_match 验证无字符/.%\@?在输入字段中,只有 A-Za-z0-9./在另一个输入字段中

转载 作者:行者123 更新时间:2023-11-28 00:37:02 25 4
gpt4 key购买 nike

PHP 验证 preg_matches 不工作

对于元字符,我知道它们很棘手,如果它们在方括号 [ ] 内,我认为它们会变成字面值而不是通配符,您不需要反斜杠转义。

对于$err_useridpmatch,我不明白为什么当我输入有效的输入时,错误仍然显示,而对于$err_passpmatch,当我故意输入包括?的错误字符串时,没有验证错误消息。

<?php


if (($_SERVER['REQUEST_METHOD'] == 'POST') && (!empty($_POST['submit']))):

$userid = trim($_REQUEST['userid']);
$password = trim($_REQUEST['password']);
$err_useridpmatch = '';
$err_passpmatch = '';

if ( !(preg_match('/[^\/.%\\@?]/', $userid)) ) :
$err_useridpmatch = '<div class="error">User id should not have the following characters:/.%\@?</div>';
endif; // pattern doesn't match

if ( !(preg_match('/[A-Za-z0-9.\/]/', $password)) ) :
$err_passpmatch = '<div class="error">Password must only consist of lower or uppercase letters, numbers, full stop or forward slash</div>';
endif; // pattern doesn't match


endif; //form submitted

?>
______________________________________________________________________________
HTML section:

<div id="form-content">


<form name="orderForm" action="<?php echo $_SERVER['PHP_SELF'] ?>" class=""method="post" autocomplete="on">

<table id="formtable">

<tbody>
<br>
<br>
<b><p> Please enter your user id, password and click submit</p></b>

<br>
<tr>
<td class="label"><label for="userid">User ID: </label></td>
<td class="form-input"><input type="text" id="userid" name="userid" value="<?php echo h(@$values['userid']) ?>"/></td>
<td>
<?php if (isset($err_useridpmatch)) { echo $err_useridpmatch; } ?></td>

</tr>
<br>
<tr>
<td class="label"><label for="password">Password: </label></td>
<td class="form-input"><input type="password" id="password" name="password" value="<?php echo h(@$values['password']) ?>"/></td>
<td>
<?php if (isset($err_passwordpmatch)) { echo $err_passwordpmatch; } ?></td>
</tr>

</tbody>
</table>

<p class="required" id="required">Required fields are marked with an asterisk (<abbr class="req" title="required">*</abbr>).</p>



<table id="tablebutton">
<tr>
<td class="buttonfunction"><input type="button" onclick="window.close()" id="cancel" name="cancel" value="Cancel"/></td>
<td class="buttonfunction"><input type="submit" id="submit" name="submit" value="Submit"></td>
</tr>


<!-- <td class="buttonfunction"><input type="submit" onclick="RegisterValidation()" value="Submit">-->


</table>


</form>
</div><!--end form content section-->

<pre>
<?php
if(isset($_POST['submit'])){
print_r($_POST);
}
?>
</pre>

(1) 用户id不能有以下字符/.%@?(2) 密码只能由小写或大写字母、数字、句点或正斜杠组成

最佳答案

应该验证不能包含 / 的字符串的用户 ID 正则表达式, . , % , \ , @?将是

if ( !(preg_match('/^[^\/.%\\\\@?]*$/', $userid)) )

参见 Regulex graph :

enter image description here

只能由小写或大写字母、数字、句点或正斜杠组成的密码正则表达式要简单得多:

if ( !(preg_match('/^[A-Za-z0-9.\/]*$/', $password)) )

查看此 Regulex graph :

enter image description here

详情

  • 要在常规 PHP 正则表达式字符串文字中包含反斜杠,您需要将用于匹配反斜杠的两个反斜杠中的每一个加倍,'\\\\'
  • ^不在未转义的 [ 之后匹配字符串的开头
  • $如果在字符类之外,则匹配字符串的结尾
  • *是匹配前面模式部分的 0 次或多次重复的量词( abc* 匹配 ababcabccabccccc 等)。使用 +匹配 1 次或多次重复。

关于php - 如何使用 preg_match 验证无字符/.%\@?在输入字段中,只有 A-Za-z0-9./在另一个输入字段中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55623695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com