首页 > 技术文章 > 常用正则表达式大全

bbdbolg 2021-04-23 10:27 原文

"^\d+$" //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$" //正整数
"^((-\d+)|(0+))$" //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$" //负整数
"^-?\d+$" //整数
"^\d+(\.\d+)?$" //非负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮点数
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //负浮点数
"^(-?\d+)(\.\d+)?$" //浮点数
"^[A-Za-z]+$" //由26个英文字母组成的字符串
"^[A-Z]+$" //由26个英文字母的大写组成的字符串
"^[a-z]+$" //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$" //由数字和26个英文字母组成的字符串
"^\w+$" //由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/ // 月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$" //Emil
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?" //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$" //IP地址

YYYY-MM-DD基本上把闰年和2月等的情况都考虑进去了
^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$

常用正则表达式大全,手机、电话、邮箱、身份证(最严格的验证)、IP地址、网址、日期等,一般前台js验证

<script type="text/javascript">
    /*
     * 手机号码格式
     * 只允许以13、15、18开头的号码
     * 如:13012345678、15929224344、18201234676
     */
    var regMobile = /^1[3,5,8]\d{9}$/;

    /*
     * 固定电话号码格式
     * 因为固定电话格式比较复杂,情况比较多,主要验证了以下类型
     * 如:010-12345678、0912-1234567、(010)-12345678、(0912)1234567、(010)12345678、(0912)-1234567、01012345678、09121234567
     */
    var regPhone = /^(^0\d{2}-?\d{8}$)|(^0\d{3}-?\d{7}$)|(^\(0\d{2}\)-?\d{8}$)|(^\(0\d{3}\)-?\d{7}$)$/;

    /*
     * Email邮箱
     * 如:zhangsan@163.com、li-si@236.net、wan_gwu999@SEED.NET.TW
     */
    var regEmail = /^([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\-|\.]?)*[a-zA-Z0-9]+(\.[a-zA-Z]{2,3})+$/;

    /*
     * 身份证15位编码规则:dddddd yymmdd xx p
     * dddddd:6位地区编码
     * yymmdd: 出生年(两位年)月日,如:910215
     * xx: 顺序编码,系统产生,无法确定
     * p: 性别,奇数为男,偶数为女
     *
     * 身份证18位编码规则:dddddd yyyymmdd xxx y
     * dddddd:6位地区编码
     * yyyymmdd: 出生年(四位年)月日,如:19910215
     * xxx:顺序编码,系统产生,无法确定,奇数为男,偶数为女
     * y: 校验码,该位数值可通过前17位计算获得
     *
     * 前17位号码加权因子为 Wi = [ 7,9,10,8,4,2,1,6,3,7,2 ]
     * 验证位 Y = [ 1,2 ]
     * 如果验证码恰好是10,为了保证身份证是十八位,那么第十八位将用X来代替
     * 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )
     * i为身份证号码1...17 位; Y_P为校验码Y所在校验码数组位置
     */
    function validateIdCard(idCard) {
        //15位和18位身份证号码的正则表达式
        var regIdCard = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;

        //如果通过该验证,说明身份证格式正确,但准确性还需计算
        if (regIdCard.test(idCard)) {
            if (idCard.length == 18) {
                var idCardWi = new Array(7, 2); //将前17位加权因子保存在数组里
                var idCardY = new Array(1, 2); //这是除以11后,可能产生的11位余数、验证码,也保存成数组
                var idCardWiSum = 0; //用来保存前17位各自乖以加权因子后的总和
                for (var i = 0; i < 17; i++) {
                    idCardWiSum += idCard.substring(i, i + 1) * idCardWi[i];
                }

                var idCardMod = idCardWiSum % 11;//计算出校验码所在数组的位置
                var idCardLast = idCard.substring(17);//得到最后一位身份证号码

                //如果等于2,则说明校验码是10,身份证号码最后一位应该是X
                if (idCardMod == 2) {
                    if (idCardLast == "X" || idCardLast == "x") {
                        alert("恭喜通过验证啦!");
                    } else {
                        alert("身份证号码错误!");
                    }
                } else {
                    //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
                    if (idCardLast == idCardY[idCardMod]) {
                        alert("恭喜通过验证啦!");
                    } else {
                        alert("身份证号码错误!");
                    }
                }
            }
        } else {
            alert("身份证格式不正确!");
        }
    }

    /*
     * 只能为正整数
     */
    var regNum = /^\d+$/;

    /*
     * 邮政编码
     */
    var regPostCode = /^\d{6}$/;

    /*
     * 用户名
     * 只能是字母数字下划线,并且以字母开头(5-16位)
     */
    var regUserName = /^[a-zA-Z]\w{4,15}$/;

    /*
     * IP地址
     * 如:192.168.1.102
     */
    var regIP = /^((([1-9]\d?)|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}(([1-9]\d?)|(1\d{2})|(2[0-4]\d)|(25[0-5]))$/;

    /*
     * 只能是中文汉字
     */
    var regChineseChar = /^[\u4e00-\u9fa5]+$/;

    /*
     * 网址
     * 只允许http、https、ftp这三种
     * 如:http://www.baidu.com
     */
    var regWeb = /^(([hH][tT]{2}[pP][sS]?)|([fF][tT][pP]))\:\/\/[wW]{3}\.[\w-]+\.\w{2,4}(\/.*)?$/;

    /*
     * 日期格式验证
     * 因为日期格式比较多,主要验证了以下类型
     * 2012-05-14、2012/05/6、2012.5.14、20120528
     */
    var regDate = /^[1-9]\d{3}([-|\/|\.])?((0\d)|([1-9])|(1[0-2]))\1(([0|1|2]\d)|([1-9])|3[0-1])$/;

    /*
     * 调用以上正则表达式的方法
     * 以验证电话号码格式为例
     */
    function onCheck(tel) {
        if (regMobile.test(tel)) {
            alert("恭喜通过验证啦!");

        } else {
            alert("格式不正确!");
        }
    }
</script>

正则表达式 在 JS 中的验证前台form

关键词:正则表达式,JS,验证

function checkForm(str) {

    var ruly = "/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/"    // 验证邮箱 的 正则表达式

    var regu = new RegExp(ruly);    // [生成](https://www.jb51.cc/tag/shengcheng/) 正则表达式 验证器

    if (!regu.test(str)) {

        return false;

    } else {

        return true;

    }

}

推荐阅读