15位数身份证验证正则表达式:
$sfzh=preg_match(“/^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/
”,"字符串");
$sfzh=preg_match(“/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/”,"字符串");
======================
echo preg_match("/[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}/",'asdfsd撒旦法撒旦法撒旦法撒旦法撒旦法撒旦法撒旦法撒旦法131327198611121810撒旦法撒旦法岁的斯蒂芬撒旦法',$arr);
echo "";
var_dump($arr);
首先,这是一个php正则表达式,第一个参数是身份证号的正则表达式,第二个是你的字符串,如果匹配成功将返回真,第三个参数将匹配到的身份照赋值给$arr,他是个数组格式,$arr[0]就是你完整匹配到的身份证号
========================
全网的方法主要是使用PHP验证身份证而不是从字符串提取(抽取、获取)身份证,错误发生在元符号"^"和"$"上面,删掉这两个元符号即可。
$string='which has id in';
$pattern = '/[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]/';
preg_match($pattern, $string, $matches);
var_dump($matches);
18位的身份证号每一位都代表什么 例如:110102197810272321
echo substr(110102197810272321,0,2)."<br>"; // 省级政府的代码 12
echo substr(110102197810272321,2,2)."<br>"; // 代表地、市级政府代码。01
echo substr(110102197810272321,4,2)."<br>"; // 代表县、区级政府代码。 06
echo substr(110102197810272321,6,8)."<br>"; // 获取身份证的生日 1993/11/09
echo substr(110102197810272321,14)."<br>"; // 7017 15-18位代表身份证持有人在当地的顺序码,其中奇数为男、偶数为女。
=================
15位身份证每一位都代表什么 例如:230103681116482
echo substr(230103681116482,0,6)."<br>"; // 前6位代表地区代码。 230103
echo substr(230103681116482,6,6)."<br>";// 7-12位代表出生年、月、日。
echo substr(230103681116482,12)."<br>";// 13-15位代表身份证持有人在当地的顺序号,其中奇数代表男性,偶数代表女性。
PHP验证身份证号正则表达式代码
$IDCard='';$preg_card='/^\d{15}$)|(^\d{17}([0-9]|X)$/isu';if(preg_match($preg_card,$IDCard)){
echo 1;}else{
echo 0;}
注意:这里只是对身份证号中的数字与位数进行的验证,如果想要严格的验证,请参考本博客的关于身份证号码验证的其它文章。
php 身份证的正则表达式怎么写?
$IdCard = "/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/i";
提示 :正则格式: ‘/正则表达式/模式修正符’;
所以 添加 i 是忽略英文字母大小写的
===================
/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/
一般地 身份证有15位或18位 18位的最后一位还有可能是字母X或x
我直接复制我以前写的函数给你,知道你是伸手党
/**
* Notes:身份证是否合法
* User:
* Name:
* Date: 2020/2/11
* Time: 2:32
* copyright:
* @param $vStr
* @return bool
*/
private function isCreditNo($vStr){
$vCity = array(
'11','12','13','14','15','21','22',
'23','31','32','33','34','35','36',
'37','41','42','43','44','45','46',
'50','51','52','53','54','61','62',
'63','64','65','71','81','82','91'
);
if (!preg_match('/^([\d]{17}[xX\d]|[\d]{15})$/', $vStr)) return false;
if (!in_array(substr($vStr, 0, 2), $vCity)) return false;
$vStr = preg_replace('/[xX]$/i', 'a', $vStr);
$vLength = strlen($vStr);
if ($vLength == 18) {
$vBirthday = substr($vStr, 6, 4) . '-' . substr($vStr, 10, 2) . '-' . substr($vStr, 12, 2);
} else {
$vBirthday = '19' . substr($vStr, 6, 2) . '-' . substr($vStr, 8, 2) . '-' . substr($vStr, 10, 2);
}
if (date('Y-m-d', strtotime($vBirthday)) != $vBirthday) return false;
if ($vLength == 18) {
$vSum = 0;
for ($i = 17 ; $i >= 0 ; $i--) {
$vSubStr = substr($vStr, 17 - $i, 1);
$vSum += (pow(2, $i) % 11) * (($vSubStr == 'a') ? 10 : intval($vSubStr , 11));
}
if($vSum % 11 != 1) return false;
}
return true;
}