我正在开发CodeIgniter项目,我正在进行自定义验证,而且我不是正则表达式专家。 到目前为止,我做了一个简单的测试,但我似乎无法做到这一点。 此验证只能包含A-Z a-z 0-9和特殊字符,例如:
@ ! # / $ % & ' * + - = ? ^ _ ` { | } ~ .
我不能拥有( ) [ ] : ; " < > , \
在我的控制器中:
public function test(){
$this->form_validation->set_rules('communication_number', 'Communication Number', 'required|trim|xss_clean|callback_validate_communication_number');
$this->form_validation->set_message("validate_communication_number", "The %s field must only contain blah blah");
if($this->form_validation->run() == false)
{
echo validation_errors();
}
else
{
echo "Passed";
}
}
public function validate_communication_number($communication_number)
{
if(preg_match("/^[a-z0-9@\!\#\/$\%\&\'\*\+\-\/\=\?/^/_/`/{/|/}/~/.]+$/i", $communication_number))
{
return true;
}
else
{
return false;
}
}
答案 0 :(得分:3)
如果您使用双引号或只需更改为单引号,则必须使用\\
转义反斜杠:
if(preg_match('/^[a-z0-9@\!\#\/$\%\&\'\*\+\-\/\=\?/^/_/`/{/|/}/~/.]+$/i', $ff_communication_room))
^--- Here
但是,你可以这样写你的正则表达式(你不需要所有那些转义的反斜杠:
^[a-z0-9@!#\/$%&'*+=?^_`{|}~.-]+$
正如您所看到的,它是一个有效的正则表达式:
<强> Working demo 强>
代码
$re = '/^[a-z0-9@!#\/$%&'*+=?^_`{|}~.-]+$/i'; // Note hyphen at the end
$str = "your string";
if(preg_match($re, $str))
{
return true;
}
else
{
return false;
}