众所周知,javascript里验证中文的正则表达式如下:
var name = $("input[name='name']").val();var regex=/^[\u4E00-\u9FA5]{2,10}$/;if(regex.test(name)==false){alert('请输入真实的中文姓名', '提示');return false;}
js使用的是[\u4E00-\u9FA5],但是在php中使用则会出现如下报错信息:
那我们要怎么做呢,正确代码如下:
$str = 'CSDN博客';if(preg_match('/[\x7f-\xff]/', $str)){echo '字符串中有中文<br/>';}else{echo '字符串中没有中文<br/>';}if(preg_match('/^[\x7f-\xff]+$/', $str)){echo '字符串全是中文';}else{echo '字符串不全是中文';}
最后分享一下我Thinkphp里Validate验证器代码:
<?phpnamespace app\common\validate;use think\Validate;class Vdate extends Validate{//定义正则验证器protected $regex = [ 'name' => '/^[\x7f-\xff]{2,10}$/i','card'=>'/^(\d{18,18}|\d{15,15}|\d{17,17}X)$/i'];//第一层:每个字段对应一个规则protected $rule=['__token__'=>'require|token','name' => 'require|regex:name','card' => 'require|regex:card',["money","require|number|>:0","金额不能为空|金额必须是数字|金额必须大于0"],];protected $message = ['__token__.require' => 'token令牌异常','__token__.token' => '表单不能重复提交,可以刷新页面重试','name.require' => '姓名不能为空','name.regex' => '请输入真实的中文姓名','card.require' => '身份证号码不能为空','card.regex' => '请输入正确的身份证号码',];//第二层:应用的场景protected $scene=["token" => ["__token__"],"submit" => ["name","card","money"],];}
完整的Validate验证示例教程,可以参考我之前的文章:
Thinkphp5使用Validate验证防止表单重复提交的两种方式_美奇软件开发工作室-CSDN博客html表单添加一个“__token__”唯一码,如下:<input type="hidden" name="__token__" value="{$Request.token}" />方法一:在需要验证的控制器里写完整的Validate<?phpnamespace app\index\controller;use think\Validate;//1.引用Validate类class Test extends Controller{ public fu/qq15577969/article/details/120514334