前言
这个学起来不难,倒是很容易忘记干脆写一次记录下来,方便以后查阅
什么是正则表达式
能让计算机读懂的字符串匹配规则
写法
var re=new RegExp('规则', '可选参数');
例如:var str = "lyichao"; var patt1 = /^[a-z]+$/; document.write(str.match(patt1)); //输出结果:lyichao
规则中的字符
普通字符匹配
如:
/a/
匹配字符‘a’
,/a,b/
匹配字符‘a,b’
转义字符匹配
字符 含义 \d
匹配一个数字,即0-9 \D
匹配一个非数字,即除了0-9 \w
匹配一个单词字符(字母、数字、下划线) \W
匹配任何非单词字符。等价于 [^A-Za-z0-9_]
\s
匹配一个空白符 \S
匹配一个非空白符 \b
匹配单词边界 \B
匹配非单词边界 .
匹配一个任意字符,除了换行符 \n
和回车符\r
\1
重复子项
量词
量词 含义 ?
出现零次或一次(最多出现一次) +
出现一次或多次(至少出现一次) *
出现零次或多次(任意次) {n}
出现n次 {n,m}
出现n到m次 {n,}
至少出现n次
任意一个范围
范围 含义 [abc123]
匹配‘abc123’中的任意一个字符 [a-z0-9]
匹配a到z或者0到9中的任意一个字符
限制开头结尾
限定符 含义 ^
以紧挨的元素开头 $
以紧挨的元素结尾
常用函数
test
用法:正则.test(字符串) 匹配成功,就返回真,否则就返回假
search
用法:字符串.search(正则) 匹配成功,返回位置,否则返回-1
match
用法: 字符串.match(正则);匹配成功,就返回匹配成功的数组,否则就返回null
replace
用法:字符串.replace(正则,新的字符串) 匹配成功的字符去替换新的字符
常用表达式
表达式 | 含义 |
---|---|
^[a-z0-9_-]{5,15}$ |
用户名(限制小写字母、数字和下划线,长度为6-15位) |
^[A-Za-z0-9_\W]{6,}$ |
密码(允许大小写字母、数字和下划线,长度限制至少6位) |
^[a-z0-9_]{6,18}\@[a-z0-9]{2,}\.[a-z0-9]{2,}$ |
邮箱(登录名允许使用6-18位字母、数字或下划线,主机名限制为小写字母和数字,域名限制为小写字母) |
^[1][3-9][0-9]\d{8} |
国内11位手机号码 |
^\d{17}[X\d]{1}$ |
18位身份证 |
^[1-9]\d*$ |
正整数 |
^-[1-9]\d*$ |
负整数 |
^-?[1-9]\d*$ |
整数 |
^\d{4}\-(0?[1-9]|1?[0-2])\-(0?[1-9]|1?[0-9]|2?[0-9]|3?[0-1])$
年-月-日