jquery - 空格的codeigniter表单验证正则表达式不起作用
问题描述
我有一个只能由字母数字、下划线、破折号和圆点填充的表单输入框。奇怪的是,我可以成功地检查输入是否符合 regex101 中的规则/^[A-Za-z0-9._-]+$/
,但是当我在我的 PHP 代码上应用相同的模式时,表单验证不会space
在结尾出现错误时触发错误。下面是我的代码:
这是html:
<form action="" id="form1">
<input type="text" name="username" id="username" value="<?php $this->input->post('username'); ?>">
<button type="button" id="btnSubmit">Submit</button>
</form>
表单使用 jquery (v3.3.1) ajax 发布,如下所示:
var myData = $('#form1').serializeArray();
$.ajax({
url: '/home/validate_inputs',
type: 'POST',
data: myData,
dataType: 'json',
success: function(res) {
console.log('res', res);
},
error: function(err) {
console.log('error', responseText);
}
});
这是 PHP (v7.4.7) 代码:
public function validate_inputs()
{
$rules = [
'field' => 'username',
'label' => 'Username',
'rules' => 'required|callback__check_characters_username'
];
$this->form_validation->set_rules($rules);
if ($this->input->server('REQUEST_METHOD') == 'POST' && $this->form_validation->run())
{
// do database process
}
if ($this->input->is_ajax_request())
{
$response = [
'postdata' => $this->input->post(),
'message' => validation_errors() ? : 'process completed successfully',
];
echo json_encode($response);
}
}
public function _check_characters_username($val)
{
if ( ! preg_match("/^[A-Za-z0-9._-]+$/", $val))
{
$this->form_validation->set_message('_check_characters_username', 'Forbidden characters!!');
return false;
}
return true;
}
解决方案
推荐阅读
- dll - 如何确保您使用的是最新版本的第三方工具而无需手动检查?
- php - 在 Twlio 中减慢语音速度(日语)
- angular - 功能 Cloud Functions 响应缓慢
- jquery - 欧芹验证不适用于选择下拉菜单
- c - 将宏函数定义为(0)是什么意思?
- python - 如何使用 SVM 的线性 svc 获得精度和召回率?
- asp.net - 如何在本地主机上的 asp.net MVC 应用程序中配置/使用 HTTP Public-Key-Pinning (HPKP)
- angular - 使用 @import 的 Angular 6 组件库
- javascript - 如何将类添加到大类Javascript的参数中
- javascript - p元素不删除ondrop