常用正则表达式(手机号、邮箱、URL地址、身份证等等)

一、前言

  不好的习惯:1、每一次用到正则都是上网copy一份,也没有去学习思考,看看都是什么意思;

        2、一个项目里不同的地方用到了相同的校验,一直在重复的copy代码,并没有统一起来,万一哪天要修改规则,若是多人开发,每个人的正则校验不尽相同,改起来就很麻烦。

  先记录一下,后续慢慢学习,最后自己能看懂并会写常用的正则。

二、正则基本知识点

  1、横向模糊匹配{}

    一个正则可以匹配的字符串的长度不是固定的,使用量词可以达到这种目的。

    量词:比如{m , n} :表示连续出现最少 m 次,最多 n 次;跟在一个字符的后面就表示对该字符的限定。

    比如邮箱的校验:/^\[email protected][a-z0-9]+\.[a-z]{2,4}$/,写在了[a-z]后面,表示可以有2到4位的字母;

    比如手机号的校验: /^1[3456789]\d{9}$/,跟在了\d后面,表示需要出现9个数字       

{m , n} :表示连续出现最少 m 次,最多 n 次
{m , }   :表示至少出现m次
{m}      :表示出现m次
?      :等价于{0,1} 表示出现或不出现
+        :等价于{1,} 表示至少出现1次
*        :等价于{0,} 表示出现任意次,可以不出现

    比如邮箱的校验:/^\[email protected][a-z0-9]+\.[a-z]{2,4}$/,写在了[a-z0-9]后面,可以出现0到9或者字母a-z的任意一个,至少一次

  2、纵向模糊匹配[]

    正则匹配的字符串对于某一位置上的字符来说,它可以有多种可能,不局限于某一类型,使用字符组可以达到这种目的。

    字符组:比如[abc],表示该字符是可以字符 "a"、"b"、"c" 中的任何一个。对于这一位置来说,我们可以有3种可能性。

    比如手机号的校验: /^1[3456789]\d{9}$/,它在第二个位置,根据一般手机运营商来说,提供手机第二位的数字可以是3到9的任意一个,才符合规范。

    如果字符组里表示的字符特别多,可以使用范围表示法,用连字符-来省略和缩写。

    比如邮箱的校验:/^\[email protected][a-z0-9]+\.[a-z]{2,4}$/,它跟在@后面,根据我们邮箱的规范可知,@后面需要的是0到9或者字母a-z的任意一个

  3、常用的简写形式

    \d  :表示[0-9],表示一位数字
    \D  :表示[^0-9],表示除数字外的任意字符
    \w  :表示[0-9a-zA-Z_],表示数字、大小写字母和下划线
    \W  :表示[^0-9a-zA-Z_],非单词字符

    比如手机号的校验: /^1[3456789]\d{9}$/,结合后面的量词,\d在第三位,表示从第三位起,一共9位都是数字

三、表单常用

  可以把一个项目里用到的校验规则写在一个工具类里,这样可以保证一个项目里对同一个东西的校验是统一的,不用重复多余的堆砌代码。

class Validator {
    //身份证校验
    idCard(val){
        return /(^[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]$)|(^[1-9]\d{7}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/.test(val)
    }

    //手机号校验
    phnoe(val){
        return /^1[3456789]\d{9}$/.test(val)
    }

    //邮箱
    email(val){
        return /^\[email protected][a-z0-9]+\.[a-z]{2,4}$/.test(val)
    }

    //普通护照
    passport(val){
        return /^((1[45]\d{7})|(G\d{8})|(P\d{7})|(S\d{7,8}))?$/.test(val)
    }

    //台胞证
    taiwanID(val){
        return /^[a-zA-Z][0-9]{9}$/.test(val)
    }
    //港澳身份证
    hkId(val){
        return /^([A-Z]\d{6,10}(\w1)?)$/.test(val)
    }

    //中文
    chineseWord(val){
        return  /^[\u4e00-\u9fa5]*$/.test(val)
    }

    //密码(不能是纯数字或字母)
    psdRxp(val){
        const numberRegexp = /^\d+$/;
        const letterRegexp = /^[a-zA-Z]+$/;
        return numberRegexp.test(val) || letterRegexp.test(val)
    }
}
export default new Validator();

参考书目:《javascript正则表达式迷你书》

原文地址:https://www.cnblogs.com/songForU/p/12585344.html

时间: 2024-07-29 09:00:52

常用正则表达式(手机号、邮箱、URL地址、身份证等等)的相关文章

Java电商常用正则表达式 手机号 邮箱 身份证 验证码等

package cn.java.com; import java.util.regex.Pattern;/** * 账户相关属性验证工具 * */public class VerifyUtil { /** * 正则表达式:验证用户名 */ public static final String REGEX_USERNAME = "^[a-zA-Z]\\w{5,20}$"; /** * 正则表达式:验证密码 */ public static final String REGEX_PASSW

java 正则表达式 手机号 邮箱

package com.ict.modules.plateform.tool; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang3.StringUtils; /** * 正则表达式工具类 * @author hsw * */ public class RegularUtil { /** * 校验手机号 * true=isMobile("18910808534

PHP表单常用正则表达式(URL、HTTP、手机、邮箱等)

<?php /** * @description: 正则表达式匹配 */ class Regex { /** * @手机号 */ public static function Phone($subject) { $pattern='/^(0|86|17951)?(13[0-9]|15[012356789]|1[78][0-9]|14[57])[0-9]{8}$/'; return Regex::PublicMethod($pattern, $subject); } /** * @数字 */ pu

web开发常用的js验证,利用正则表达式验证邮箱、手机、身份证等输入

正则表达式验证 //邮箱 var emailReg = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; email = document.getElementById("email").value; if (!emailReg.test(email)) { win_alert('你输入的邮箱格式不正确!'); return; } //手机号码 var phoneReg = /^(13[0-9]{9})

Android正则表达式验证邮箱地址

1 // 邮箱有效性验证 2 Pattern pattern = Pattern 3 .compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"); 4 Matcher mc = 5 pattern.matcher(RegistMail.getText().toString().trim()); 其中RegistMail为一个EditText控件,用来处理用户的邮箱输入. Android正则表达式验证邮箱地址,布布扣,bu

常用正则表达式—邮箱(Email)

常用正则表达式-邮箱(Email) ?本文针对有一点正则基础的同学,如果你对正则一无所知,请移步"正则表达式30分钟入门教程"学习. ?要验证一个字符串是否为邮箱的话,首先要了解邮箱账号的格式.我尝试过在网上找出一个标准的格式,但是很遗憾我没有找到.我也尝试使用RFC标准来判断邮箱的格式,但是也没有结果.网上些博客说不应该使用RFC标准来验证邮箱是否合法,有兴趣的可以看看"is this email valid?"和"Don't RFC-Validate

Java 正则表达式匹配邮箱地址

作者 : 卿笃军 正则表达式中的部分元字符: 元字符 正则表达式中的写法 意义 . . 代表任意一个字符 \d \\d 代表0~9的任何一个数字 \D \\D 代表任何一个非数字字符 \s \\s 代表空白字符,如:'\t','\n' \S \\S 代表非空白字符 \w \\w 代表柯用作标示符的字符,单不包括'$' \W \\W 代表不可用作标示符的字符 . . 正则表达式,限定修饰符: 限定修饰符 意义 示例 ? 0次或1次 A? * 0次或多次 A* + 1次或多次 A+ {n} 正好出现

正则表达式匹配URL——给URL地址加上&lt;a&gt; 链接

<?php function replace_url ($content) { if (empty($content)) return; //给URL地址加上 <a> 链接 $preg = '/(?:http:\/\/)?([\w.]+[\w\/]*\.[\w.]+[\w\/]*\??[\w=\&\+\%]*)/is'; $content = preg_replace($preg, '<a href="http://\1" target="_b

php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)

1.电子邮件地址的校验 <?php /* 校验邮件地址*/ function checkMail($email) { //用户名,由"w"格式字符."-"或"."组成 $email_name= "\w|(\w[-.\w]*\w)"; //域名中的第一段,规则和用户名类似,不包括点号"." $code_at= "@"; $per_domain= "\w|(\w[-\w]*\

常用正则表达式(网上收集的)

常用的正则表达式 常用正则表达式 正则表达式用于字符串处理.表单验证等场合,实用高效.现将一些常用的表达式收集于此,以备不时之需. 用户名:/^[a-z0-9_-]{3,16}$/ 密码:/^[a-z0-9_-]{6,18}$/ 十六进制值:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/ 电子邮箱:/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/ URL:/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.