正则表达式基础语法

正则表达式中,所有字符分为两类:

普通字符元字符

主要普通字符:小写字母、大写字母、数字、下划线、部分特殊符号、非西文字符等

主要元字符(具有特殊含义的字符):. \ { } * + ? ( ) [ ] - | ^ $

. 表示任意一个字符(除了换行符)

转移符,用来改变其他字符的含义,如:

\ 元字符把元字符转义为普通字符,如\.把元字符.转义为普通字符的.

\ 普通字符把普通字符转义为含有特殊含义的字符,如:

\n 换行符    \r 回车符   \t 制表符. . .


重复匹配

(x表示一个字符,或者一个字符类,或者一个组等)

x{n}   x连续出现n次

x{n,}    x至少连续出现n次

x{n,m}   x至少连续出现n次,至多连续出现m次

x*    x连续出现0次或多次,等同于x{0,}

x+    x至少连续出现1次,等同于x{1,}

x?    x出现0次或1次,等同于x{0,1}


选择匹配

使用 实现选择匹配,即多个选项中任选一个

a|b|c   匹配a或者b或者c

red|blue|green   匹配red或者blue或者green


字符类

匹配候选字符的任意一个

[]    [abc]   匹配abc中任意一个字符,类似a|b|c

[^ ]   [^abc]   匹配非abc的任意一个字符 

[ - ]   [0-9]、[a-z]、[a-zA-Z]   匹配范围内的任意一个字符

注意:字符类中的元字符(\除外),会被自动转义为普通字符,比如[.]等同于[\.]

\w   代表一个单词字符,类似于[a-zA-Z0-9_],有的语言中也可以匹配中文

\W   代表一个非单词字符,类似于[^a-zA-Z0-9_]

\d   代表一个数字字符,等同于[0-9]

\D   代表一个非数字字符,等同于[^0-9]

\s   代表一个空白字符

\S   代表一个非空白字符


位置匹配

正则中的匹配有两种,一种是匹配具体的字符,另一种是匹配特定的位置

^   匹配文本开始位置

$   匹配文本结束位置

\b   匹配单词边界(单词开始位置或结束位置)

校验操作时,是否使用^$对校验操作没有影响

获取、替换等操作时,一般不使用^$


组 group

正则使用 ( ) 表示一个组,组可以让若干字符形成一个小整体

(ab)   匹配ab

(red|blue|green)   匹配red或者blue或者green

(red|blue|green)   color匹配red color或者blue color或者green

color在匹配时,组的当前"取值" 会被临时保存起来,方便引用。可以使用 \1 引用第一个组的当前"取值",最多可以引用九个不同的组:\9

(ab)c\1   匹配abcab

([ab])\1   匹配aa或者bb

(a)(b)\1\2   匹配abab


标记 flag

标记用来额外指定正则的匹配策略(标记可以不写在正则表达式内)

i   大小写不敏感insensitive(也可以理解成ignore)

g   全局匹配global效果是可以依次的获取到和正则匹配的所有子字符串

m   多行匹配multiline效果是^$可以匹配一段文本中每行的开始和结束位置



常用正则表达式

校验数字:^[0-9]*$

校验整数或者小数:^[0-9]+([.][0-9]+){0,1}$

校验qq号:[1-9][0-9]{4,}

校验手机号:^1[34578]\d{9}$

校验身份证:(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|x|X)$)

校验日期(格式:yyyy-mm-dd,已考虑平闰年):^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$

校验email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

校验URL:^[a-zA-z]+://[^\s]*$

你可能感兴趣的:(正则表达式基础语法)