首页 > 试题广场 >

验证是否是身份证

[编程题]验证是否是身份证
  • 热度指数:7324 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
请补全JavaScript代码,要求以Boolean的形式返回字符串参数是否符合身份证标准。
注意:
1. 无需考虑地区信息、出生日期、顺序码与校验码的验证
示例1

输入

_isCard('21062319980907888X')

输出

true
const _isCard = number => {
  // 补全代码
  return /^\d{17}(\d|x)$/i.test(number);
};



发表于 2023-04-21 20:30:25 回复(0)
正则表达式
  // 补全代码
                number=''+number
                let len = number.length
                if(len!=18){
                    return false
                } 
                let reg = /\d{17}[\dXx]/g
             
                if(reg.test(number)){
                    return true
                }
                return false

发表于 2023-02-13 19:54:04 回复(0)
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
    </head>
    <body>

        <script>
            const _isCard = number => {
                // 补全代码
                if(number.length != 18){
                    return false;
                }else if(number.length = 18){
                    for(let i = 1; i <= 17;i++){
                        if(number[i] % 1 == 0){
                            return true;
                        }
                    }
                }
            }
        </script>
    </body>
</html>
发表于 2023-01-01 16:01:01 回复(0)
   // 补全代码
let reg = /^\d{17}(\d|X)$/;
    return reg.test(number);
}

发表于 2022-12-04 10:02:14 回复(0)
  <script>
            const _isCard = number => {
                // 补全代码
               let reg=/^[1-9]\d{5}(19\d{2}|20[0-2][0-2])((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
               return reg.test(number)
            }
        </script>
发表于 2022-11-17 10:51:35 回复(0)
const _isCard = number => {
                // 补全代码
                //一代身份证(15位数字)
                //二代身份证18位数字或17数字+X/x
                var regx = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
                return regx.test(number)
            }
发表于 2022-10-15 10:46:12 回复(0)
const _isCard = number => {
                // 补全代码
                return number.length == 18 ? true:false
            }
//这题的判断也太随意了
发表于 2022-09-23 20:53:28 回复(0)
 <script>
            const_isCard = number => {
                // 补全代码
                return number.length === 18
            }
        </script>
发表于 2022-09-12 14:29:05 回复(0)
<html lang="en"> <body>
    <script>
        const _isCard = number => {
            // 补全代码
            //使用一个正则表达式字面量,其由包含在斜杠之间的模式组成
            //^:匹配输入的开始
            //括号被称为捕获括号,匹配里面的内容
            //\d:匹配一个数字,等价于 [0-9]
            //{n}:n 是一个正整数,匹配了前面一个字符刚好出现了 n 次。
            //$:匹配输入的结束。
            //test:一个在字符串中测试是否匹配的 RegExp 方法,它返回 true 或 false。
            var regex = /(^\d{15}$)|(^\d{17}(\d|X|x)$)/
            return regex.test(number)
        }
    </script>
</body>
</body></html>
发表于 2022-08-30 20:35:50 回复(0)
第一次只判断长度直接过了 想了想还是要判一下每一项格式 正则忘记了 笨方法 菜鸟做法 笑死
1.首先看字符串或者转化为数组后的长度
2.把数组的最后一项提出来为wei(尾项的意思 笑死) 此时原数组变为17位
3.检测最后一项wei
4.检测前17项
发表于 2022-08-30 11:33:28 回复(0)
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
    </head>
    <body>

        <script>
            const _isCard = number => {
                // 补全代码
                if(number.length!=18) return false
                reg='d{17}[a-z]|[A-Z]'
                if(reg.match(reg)) return true
                return false
                
            }
        </script>
    </body>
</html>
发表于 2022-08-25 17:56:46 回复(0)
正则对身份证(2代,18位)最后一位的校验,可能为数字或者字母X,有较为规范的校验规则,推荐使用:
const reg = 
/^[1-9]\d{5}(?:18|19|20)\d{2}(?:0[1-9]|10|11|12)(?:0[1-9]|[1-2]\d|30|31)\d{3}[\dXx]$/;

发表于 2022-08-18 11:18:26 回复(0)
const _isCard = number => {
                // 正则表达式
                var reg = /\d{17}[0-9X]/
                return reg.test(number)
            }
发表于 2022-05-23 19:34:33 回复(0)

也不知道哪错了,有没有高手指点迷津

<script>
            const _isCard = number => {
                // 补全代码
                if(number.toString().length!==18){return false;}
                let arr=number.split('');
                for(let i=0;i<17;i++){
                    if(arr[i]>57||arr[i]+'0'<48){return false;}
                }
                if((arr[17]+'0'<=57&&arr[17]+'0'>=48)||arr[17]==='X'){return true;}
            }
        </script>
发表于 2022-02-14 23:39:05 回复(0)
const _isCard = number => {
    // 补全代码
    return number.toString().length == 18;
}

发表于 2022-02-11 15:40:28 回复(0)
            const _isCard = number => {
                // 补全代码
                let str = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
                return str.test(number)
            }


发表于 2022-02-06 22:16:41 回复(0)
<script>
            const _isCard = number => {
                // 补全代码
                let reg = /^\d{17}[0-9X]$/
                return reg.test(number)
            }
        </script>
发表于 2022-01-30 16:41:59 回复(0)
let reg = /^[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]$/g
return reg.test(number)


发表于 2022-01-02 15:58:27 回复(0)
<script>
            const _isCard = number => {
                // 补全代码
                return /\d{17}[0-9X]/.test(number)
            }
        </script>

前几怎么都那么复杂呢
发表于 2021-12-27 23:21:28 回复(0)
光长度就过了
const _isCard = number => {
    // 补全代码
    if((''+number).length != 18) return false;
    return true;
}

发表于 2021-12-23 15:16:23 回复(6)