如何使用正则表达式验证邮箱格式、手机号码格式和身份证号码格式?

推荐答案

-- -------------------- ---- -------
-------- -------------------- -
  ----- ---------- - ---------------------------------------------------
  ------ -----------------------
-

-------- ---------------------- -
  ----- ----------- - --------------------
  ------ -------------------------
-


-------- ---------------------- -
  ----- ----------- - -----------------------------------------------------------------------------
  -- --------------------------- -
    ------ ------
  -
  ----- ------ - --- -- --- -- -- -- -- -- -- -- -- -- --- -- -- -- ---
  ----- ------ - --- -- ---- -- -- -- -- -- -- -- ---
  --- --- - --
  --- ---- - - -- - - --- ---- -
      --- -- ------------------- - ----------
  -
  --- --- - --- - ---
  ------ ----------- --- ---------------------------------
-


-- --
------------------ ------------- ----------------------------------- -- ----
------------------ ------------- -------------------------------- -- -----
------------------- ------------- ------------------------------- -- ----
------------------- ------------- ------------------------------- -- -----
--------------- ---- ------------- -------------------------------------- -- ----
--------------- ---- ------------- -------------------------------------- -- ----
--------------- ---- ------------- -------------------------------------- -- -----

本题详细解读

邮箱格式验证

邮箱验证的正则表达式通常比较复杂,这里提供一个常用的版本:^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

  • ^: 匹配字符串的开始。
  • [a-zA-Z0-9._%+-]+: 匹配一个或多个字母(不区分大小写)、数字、._%+-。这部分代表邮箱用户名。
  • @: 匹配 @ 符号。
  • [a-zA-Z0-9.-]+: 匹配一个或多个字母(不区分大小写)、数字、.-。这部分代表域名。
  • \.: 匹配 . 符号(需要转义)。
  • [a-zA-Z]{2,}: 匹配至少两个字母(不区分大小写)。这部分代表顶级域名,如.com,.net,.org等。
  • $: 匹配字符串的结尾。

手机号码格式验证

中国大陆手机号码的验证通常使用 ^1[3456789]\d{9}$ 这个正则表达式。

  • ^1: 匹配以数字 1 开头。
  • [3456789]: 匹配第二位数字,通常为 3,4,5,6,7,8,9
  • \d{9}: 匹配任意9个数字。
  • $: 匹配字符串的结尾。

身份证号码格式验证

中国大陆身份证号码由18位数字或字符组成,前17位为数字,最后一位可能是数字或X。身份证验证比较复杂,不仅需要校验格式,还需要校验校验码。

  • ^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$:
    • ^[1-9]\d{5}: 匹配前6位区域码,第一位不能为0;
    • (18|19|20)\d{2}:匹配年份,限定为 18xx,19xx,20xx;
    • (0[1-9]|1[0-2]):匹配月份,01-12;
    • (0[1-9]|[12]\d|3[01]):匹配日期,01-31;
    • \d{3}:匹配顺序码,3位数字;
    • [\dXx]$:匹配最后一位校验码,可以为数字或 X(或 x)。
  • 校验码计算:身份证号码前17位乘以相应的加权因子,然后求和,再除以11取模,根据模值在校验码数组中找到对应的校验码。
  • 加权因子数组:[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
  • 校验码数组: [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]
  • 注意:此处身份证号码的校验,为简化代码,未校验具体省市区划,以及日期是否有效。在实际应用中,应根据实际情况进行校验。
纠错
反馈