正则的定义:在java中用RegExp对象表示,可以使用RegExp()构造函数来创建。多用直接定义,包含在//间的字符。
ECMAScript 5中RegExp对象是独立的实例,ECMAScript3中是共享同一个实例。
正则表达式中所有字母和数字都是按照字面含义进行匹配
直接量字符:
\o NUL字符
\t 制表符
\n 换行符
\v 垂直制表符
\f 换页符
\r 回车符
\xnn 十六进制nn指定的拉丁字符
\cX 控制字符^X
标点符号前加转义符
字符类:
一个字符可以匹配包含它的任意字符。可以通过”^”来定义否定字符类
eg:
/[abc]/是和字母”a”,”b”,”c”中的任何一个都匹配。
/[^abc]/匹配所有abc之外的字符串
/[a-z]/匹配拉丁字母表中的小写字母
/[a-zA-Z0-9]/匹配所有的拉丁字母中的字母和数字
字符 匹配
[….] 方括号内的任意字符
[^…] 不在方括号内的任意字符
. 除换行符和其他Unicode行终止符之外的任意字符,相当于[^\r\n]
\w 任何ASCII字符组成的单词,等于[a-zA-Z0-9_]
\W 任何不是ASCII字符组成的单词
\s 任何Unicode空白字符,制表符空格等
\S
\d 匹配任意一个数字,相当于[0-9]
\D 非数字
量词
代码 说明 实例
? 匹配前一项0次或1次 /JS?/可以匹配JScript或者JavaScript
+ 匹配前一项出现至少一次 /JS+/匹配JS,JSSS
* 匹配0次或多次
{n} 匹配前一项恰好n次 /o{2}/boooook匹配任意两个o
{n,} 匹配前一项至少n次 /o{2,}/
{n,m} 匹配大于等于n小于等于m次 /{n,m}/
注意:{n,m},数字与逗号之间不能有空格
指定匹配位置
代码 说明 实例
^ 匹配字符串的行开头 /^g/匹配good中的g但不匹配bag中的g
匹配字符串的行结尾/
g/匹配bag中的g但不匹配good中的g
\b 匹配单词边界 /e\b/匹配i love seek 中love的e,不匹配seek中的e
\B 匹配非单词边界
使用选择匹配符
正则表达式的选择匹配符只有一个”|”,eg:/word|dream/
分组
用小括号将多个单独的字符或字符类组合成子表达式,以便想处理独立单元那样处理。eg:/J(ava)?Script/ 匹配JavaScript或JScript 注意区分[…]
1.通过RegExp类的构造方法创建
语法格式:new RegExp(patten[,flags])
patten:必选参数,用于指定需要匹配的字符串。
flags:可选参数,用于指定正则表达式的标志信息。
g:全局标志。如果设置了该标志,对于某个文本执行搜索替换时将对所有本分起作用
i:忽略大小写标志。
m:多行标志。如果不设置^and$只能匹配字符串开头和结尾,不能换行!
eg:var objexp = new RegExp(“\d”,g);匹配全文所有数字
2.通过正则表达式字面量创建RegExp对象
var objexp=/\d/g;
3.使用test()方法进行模式匹配
test()搜索到指定字符串返回true否则返回false
objexp.test(str);
电话号码~ var objexp=/(^(\d{3}-)?\d{8} )|((\d4−)?\d7,8 )/
4.使用exec()方法进行模式匹配
exec()方法没有匹配字符时返回空,否则返回一个数组,这个数组的第一个元素包含于正则表达式相匹配的字符串,其他元素包含的是匹配的各个分组
5.使用match()方法进行模式匹配
str.match(objexp);返回匹配结果组成的数组。
6.search()返回匹配第一个子串的起始位置。
7.RegExp对象属性
source正则表达式文本,global只读布尔值,是否有修饰符g。ignoreCase是否有修饰符i,multiline是否有修饰符m。lastIndex下一次检索开始的位置用于exec()
eg:var reg=/aba/ig;
console.log(reg.exec(“abaABA”));//lastIndex为0
console.log(reg.exec(“abaABA”));//LastIndex为3
console.log(reg.exec(“abaABA”));//LastIndex为6
console.log(reg.exec(“abaABA”));//LastIndex为0
语法格式: regExp.exec()
获取身份证号
var objexp=/(\d{6})(\d{8})(\d{4})/;
var arr=objexp.exec(str);
arr[0]是整体arr[2]是生日