正则

166 阅读2分钟

正则集

 const regExp = {
    //部分 字母、数字、+*-/_三种中的两种组成
    part_letterNumberSymbol: /^(([0-9]+[a-zA-Z]+)|([0-9]+[\/\*\-\+\_]+)|([a-zA-Z]+[0-9]+)|([a-zA-Z]+[\/\*\-\+\_]+)|([\/\*\-\+\_]+[a-zA-Z]+)|([\/\*\-\+\_]+[0-9]+))([a-zA-Z]*[\/\*\-\+\_]*[0-9]*)+$/,
    //必须 字母、数字
    required_letterNumber: /^(?=.*[0-9])(?=.*[a-zA-Z])(.{2,})$/,
    //只能 字母、数字
    can_numberAndletter: /^[A-Za-z0-9]+$/,
    // 只能 字母、数字、下划线
    can_number_letter_Underline: /^[A-Za-z0-9\_]+$/,
    //只能 字母
    can_letter: /^[A-Za-z]+$/,
    //只能 字母、汉字
    can_numberAndcharacters: /^[a-zA-Z\u4e00-\u9fa5]+$/,
    //只能 汉字、字母、数字
    can_letterNumberChinese: /^[A-Za-z0-9\u4e00-\u9fa5]+$/,
    //只能 汉字、字母、数字、下划线
    can_charactersNumbersUnderscores: /^[\w\u4e00-\u9fa5]+$/,
    //英文开头,只能英文小写,数字,下划线
    startLetter_number_letter_Underline: /^[a-z]+[a-z0-9\_]*$/,
    // 手机号正则,用途例如:验证手机号
    phone: /^1\d{10}$/,
    // 微信号码
    wechat: /^[a-zA-Z]([-_a-zA-Z0-9]{5,20})+$/,
    // 邮箱正则
    email: /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/,
    // IP地址
    ip: /^(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)$/,
    // 非数字开头
    beginNoNumber: /^\D{1}.*$/,
    // 经纬度
    lonLat: /^[+-]?\d{1,3}(\.\d{1,6})?,[+-]?\d{1,3}(\.\d{1,6})?$/,
    /* 合法uri*/
    urlregex: /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/,
    // 浮点数 可以带+-符号
    floatNumber: /^[-+]?\d+(\.\d+)?$/,
    //座机号码
    landline: /^0[0-9]{2,3}-[0-9]{8}$/,
    //车牌号
    carPlate: /^[\u4e00-\u9fa5]{1}[A-Z]{1}[A-Z_0-9]{5}$/,
    //支付宝
    aliPay: /^[/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*][1\d{10}]$/,
    //财付通
    tenPay: /^[/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*][1\d{10}]$/,
    //中国身份证
    chinaIdCard: /^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/,
    //特殊字符
    specialChar: /[`~!@#\$%\^\&\*\(\)_\+<>\?:"\{\},\.\\\/;'\[\]]/im
}

语法

表达式 .* 就是单个字符匹配任意次,即贪婪匹配。 
表达式 .*? 是满足条件的情况只匹配一次,即最小匹配.
肯定逆序环视	(?<=expresion)	子表达式能够匹配左侧文本
否定逆序环视	(?<!expresion)	子表达式不能匹配左侧文本
肯定顺序环视	(?=expresion)	子表达式能够匹配右侧文本
否定顺序环视	(?!expresion)	字表达式不能匹配右侧文本
结合上述 (?=.*expresion) 必须匹配左侧表达式

.	匹配除换行符以外的任意字符
\w	匹配字母或数字或下划线
\s	匹配任意的空白符
\d	匹配数字
\b	匹配单词的开始或结束
^	匹配字符串的开始
$	匹配字符串的结束

*	重复零次或更多次
+	重复一次或更多次
?	重复零次或一次
{n}	重复n次
{n,}	重复n次或更多次
{n,m}	重复n到m次

\W	匹配任意不是字母,数字,下划线,汉字的字符
\S	匹配任意不是空白符的字符
\D	匹配任意非数字的字符
\B	匹配不是单词开头或结束的位置
[^x]	匹配除了x以外的任意字符
[^aeiou]	匹配除了aeiou这几个字母以外的任意字符

/g 表示该表达式将用来在输入字符串中查找所有可能的匹配,返回的结果可以是多个。如果不加/g最多只会匹配一个
/i 表示匹配的时候不区分大小写,这个跟其它语言的正则用法相同
/m 表示多行匹配。什么是多行匹配呢?就是匹配换行符两端的潜在匹配。影响正则中的^$符号
/s 与/m相对,单行模式匹配。
/e 可执行模式,此为PHP专有参数,例如preg_replace函数。
/x 忽略空白模式。
这些修饰符是可以混合使用的。例如 /ig、/ie等。