一、身份證正則表達式
身份證號碼是中國公民的唯一身份標識,其格式是18位純數字或17位數字加1位大寫字母X。身份證正則表達式使用正則表達式來描述此格式,以進行身份證號碼的合法性校驗。具體的正則表達式如下所示:
/^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i
其中,^和$是表示字元串開始和結束的特殊字元,[]表示集合,\d表示數字,|表示或,()表示分組,{}表示重複次數,i表示忽略大小寫,X表示大寫字母x。
這個正則表達式可以分為6個部分:
- [1-9]\d{5}表示6位數字,第一位數字為1-9,後面5位為任意數字,這是地址碼的格式要求。
- (19\d{2}|2\d{3})表示4位數字年份,19開頭的表示19XX年,20開頭的表示20XX年,這是出生年份的格式要求。
- (0[1-9]|1[0-2])表示2位數字月份,01-12之間,這是出生月份的格式要求。
- (0[1-9]|[12]\d|3[01])表示2位數字日期,01-31之間,這是出生日期的格式要求。
- \d{3}表示3位數字,這是順序碼的格式要求。
- ([0-9]|X)表示1位數字或大寫字母X,這是校驗碼的格式要求。
二、js身份證正則表達式
在Javascript中,要使用正則表達式進行校驗,可以使用RegExp對象來構造身份證正則表達式,並使用test()函數進行校驗。示例代碼如下:
const reg = /^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i;
const idCard = "330381199001011111";
if (reg.test(idCard)) {
console.log("身份證號碼合法");
} else {
console.log("身份證號碼不合法");
}
三、香港身份證正則表達式
香港身份證號碼共有8位或10位,格式為[A-Z][\d]{6}[\(\d\)]或[A-Z][\d]{6}[\(\d\)],其中,字母由A至Z,數字由0至9,最後一位可以是數字或括弧內的A。
香港身份證正則表達式如下所示:
/^[a-zA-Z]\d{6}[\(\d\)]$/
四、js身份證驗證正則表達式
使用Javascript進行身份證驗證需要使用RegExp對象和test()函數。示例代碼如下:
function validateIdCard(num) {
const reg = /^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i;
if (!reg.test(num)) {
return false;
}
return true;
}
const idCard = "330381199001011111";
if (validateIdCard(idCard)) {
console.log("身份證號碼合法");
} else {
console.log("身份證號碼不合法");
}
五、判斷身份證的正則表達式
在判斷身份證的過程中,需要先判斷身份證號碼是否合法,接著可以通過身份證號碼來提取出性別和出生日期等信息。以下是用正則表達式提取出出生日期和順序碼的示例代碼:
function getIdCardInfo(idCard) {
const birthday = idCard.substring(6, 14);
const sex = idCard.substring(16, 17);
const order = idCard.substring(14, 17);
const year = birthday.substring(0, 4);
const month = birthday.substring(4, 6);
const day = birthday.substring(6, 8);
const date = new Date(year + "-" + month + "-" + day);
const result = {
birthday: date,
sex: sex % 2 === 0 ? "女" : "男",
order: parseInt(order)
};
return result;
}
const idCard = "330381199001011111";
if (validateIdCard(idCard)) {
const info = getIdCardInfo(idCard);
console.log("出生日期:" + info.birthday);
console.log("性別:" + info.sex);
console.log("順序碼:" + info.order);
} else {
console.log("身份證號碼不合法");
}
六、正則表達式提取身份證
如果要從一段文本中提取出身份證號碼,可以使用正則表達式進行匹配和提取。示例代碼如下:
const text = "身份證號碼:330381199001011111";
const reg = /[1-9]\d{5}(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)/i;
const match = reg.exec(text);
if (match && match.length > 0) {
console.log("身份證號碼:" + match[0]);
}
七、利用正則表達式驗證身份證合法性
利用正則表達式驗證身份證的合法性是實現身份證驗證的常用方法之一。以下是利用正則表達式來驗證身份證的合法性的代碼示例:
function validateIdCard(idCard) {
const reg = /^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i;
if (!reg.test(idCard)) {
return false;
}
const Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];
const Ai = "10X98765432";
let sum = 0;
for (let i = 0; i < 17; i++) {
sum += parseInt(idCard.charAt(i)) * Wi[i];
}
const last = Ai.charAt(sum % 11);
if (last !== idCard.charAt(17)) {
return false;
}
return true;
}
const idCard = "330381199001011111";
if (validateIdCard(idCard)) {
console.log("身份證號碼合法");
} else {
console.log("身份證號碼不合法");
}
八、身份證的正則表達式代碼
以下是JavaScript中常用的身份證正則表達式代碼:
const reg = /^([1-9]\d{5})(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)$/i;
九、正則表達式匹配身份證
在文本中查找並匹配身份證號碼可以使用正則表達式的match()函數。以下是一個示例代碼:
const text = "身份證號碼:330381199001011111";
const reg = /[1-9]\d{5}(19\d{2}|2\d{3})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}([0-9]|X)/i;
const match = text.match(reg);
if (match && match.length > 0) {
console.log("身份證號碼:" + match[0]);
}
總結
本文詳細闡述了身份證正則表達式的相關知識,包括身份證正則表達式、js身份證正則表達式、香港身份證正則表達式、js身份證驗證正則表達式、判斷身份證的正則表達式、正則表達式提取身份證、利用正則表達式驗證身份證合法性、身份證的正則表達式代碼和正則表達式匹配身份證等方面。通過本文的學習,讀者可以更加深入地了解身份證正則表達式的具體實現方式和應用場景,從而更加靈活地應用身份證號碼的校驗和提取功能。
原創文章,作者:CRNHI,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/369104.html
微信掃一掃
支付寶掃一掃