正则表达式,用于校验一段字符是否符合他的规定。
如邮箱必须是一段数字或字母或下划线加上@字符加上(.)加上一段字符。
如果一段邮箱没有@或没有一些必要的字段,正则可以检查出来他的正确性。
正则,发现错误的代码。
常用正则
邮箱
/^([\w\.\-]+)@([\w\.\-])\.([a-Z]{2,4}$)/
邮政编码
/[1-9][0-9]{5}/
正则的创建
开头结尾用/,可以在最后面加上模式修饰符
var reg = /earth/;
var reg = /earth/img;
new运算符创建
var reg = new RegExp('earth');
var reg = new RegExp('earth','img');
模式修饰符
i:忽略大小写匹配
g:全局匹配
m:多行匹配
正则的写法
var reg = /earth/;
var str ="wow earth!!"
alert(reg.test(str));
结果:true
简写
alert(/earth/.test('wow earth!!'));
结果:true
RegExp对象
判断字段是否能匹配
TEST
alert(/earth/.test('wow earth!!'));
结果:true
返回第一次匹配到的值,否则返回NULL
EXEC
alert(/earth/.exec('wow earth!!'));
结果:earth
alert(/apple/.exec('wow earth!!'));
结果:null
STRING中正则表达式方法
注:之前的是规则在前,字符在后,现在是反之
多次匹配到的返回为一个数组
MATCH
alert('wow earth! earth!!'.match(/earth/g));
结果:earth,earth
alert('wow earth! earth!!'.match(/earth/g).length);
结果:2
返回第一次匹配的位置
SEARCH
alert('wow earth! earth!!'.search(/earth/g));
结果:4
替换匹配到的字符
REPLACE
alert('wow earth! earth!!'.replace(/earth/,'apple'));
结果:wow apple! apple!!
以匹配到的为分隔符,拆分成字符串数组
SPLIT
RegExp对象
查看上一次匹配的信息
var reg = /ear(t)h/;
var str = 'wow earth! EARTH!!';
reg.test(str);// 非简写
运行之后
alert(RegExp.input);//显示匹配的字段
RegExp对象
查看创建好的正则对象的属性
var reg = /earth/img;
alert(reg.global);//是否全局
结果:true
alert(reg.ignoreCase);//是否大小写
结果:true
alert(reg.multiline);//是否多行匹配
结果:true
alert(reg.lastIndex);//下次匹配的位置
结果:0
alert(reg.source);//表达式字符
结果:earth
元字符
有特殊含义的字符,用于规定匹配规则
以下结果全为true
点号,表示一个任意字符
alert(/e...h/.test('wow earth! earth!!'));
^,表示不能出现的字符
alert(/[^z]/.test('wow earth! earth!!'));
[a-Z],表示字母a到字母Z的任意大小写的一个字母,如果用只要大写或小写可以[a-z]或[A-Z]
alert(/[a-Z]sdf/.test('wow earth! earth!!'));
小写b,表示任意数字,和[0-9]一样
alert(/wow\b/.test('wow9 earth! earth!!'));
大写b,表示不可为任意数字,和[^0-9]一样
alert(/wow\B/.test('wow earth! earth!!'));
小写w,表示任意数字字母和下划线,和[0-9a-Z_]一样
alert(/wow\w/.test('wow9 earth! earth!!'));
大写W,表示不可为任意数字字母和下划线,和[^0-9a-Z_]一样
alert(/wow\W/.test('wow earth! earth!!'));
?,匹配0个或一个字符,没有或有一个
alert(/(w)?.test('wow earth! earth!!'));
*,匹配0个或多个,没有或有很多
alert(/g*\W/.test('wow earth! earth!!'));
+,匹配一个字符,有一个
alert(/(wow)+/.test('wow earth! earth!!'));
{n,m},匹配最少n个,最多m个字符
alert(/(earth){1,2}/.test('wow earth! earth!!'));
a|b|c,匹配a或b或c
alert(/apple|earth|apppppp/.test('wow earth! earth!!'));
其他元字符
^,行首匹配
$,行尾匹配
\0,匹配NULL字符
\b,匹配空格字符
\f,匹配进纸字符,这是啥?
\n,匹配换行字符
\r,匹配回车字符
\t,匹配制表字符
\s,匹配空白、空格、换行、制表字符
\S,匹配非空白字符
\a,只匹配字符开始处
\b,匹配单词边界,注意在[ ]里面含义不一样
\B,匹配非单词边界
\G,匹配当前搜索的开始位置
\Z,匹配字符串结束处或尾行
\z,只匹配结束处
如邮箱必须是一段数字或字母或下划线加上@字符加上(.)加上一段字符。
如果一段邮箱没有@或没有一些必要的字段,正则可以检查出来他的正确性。
正则,发现错误的代码。
常用正则
邮箱
/^([\w\.\-]+)@([\w\.\-])\.([a-Z]{2,4}$)/
邮政编码
/[1-9][0-9]{5}/
正则的创建
开头结尾用/,可以在最后面加上模式修饰符
var reg = /earth/;
var reg = /earth/img;
new运算符创建
var reg = new RegExp('earth');
var reg = new RegExp('earth','img');
模式修饰符
i:忽略大小写匹配
g:全局匹配
m:多行匹配
正则的写法
var reg = /earth/;
var str ="wow earth!!"
alert(reg.test(str));
结果:true
简写
alert(/earth/.test('wow earth!!'));
结果:true
RegExp对象
判断字段是否能匹配
TEST
alert(/earth/.test('wow earth!!'));
结果:true
返回第一次匹配到的值,否则返回NULL
EXEC
alert(/earth/.exec('wow earth!!'));
结果:earth
alert(/apple/.exec('wow earth!!'));
结果:null
STRING中正则表达式方法
注:之前的是规则在前,字符在后,现在是反之
多次匹配到的返回为一个数组
MATCH
alert('wow earth! earth!!'.match(/earth/g));
结果:earth,earth
alert('wow earth! earth!!'.match(/earth/g).length);
结果:2
返回第一次匹配的位置
SEARCH
alert('wow earth! earth!!'.search(/earth/g));
结果:4
替换匹配到的字符
REPLACE
alert('wow earth! earth!!'.replace(/earth/,'apple'));
结果:wow apple! apple!!
以匹配到的为分隔符,拆分成字符串数组
SPLIT
alert('wow earth! earth!!'.split(/earth/));
结果:wow ,! ,!!RegExp对象
查看上一次匹配的信息
var reg = /ear(t)h/;
var str = 'wow earth! EARTH!!';
reg.test(str);// 非简写
运行之后
alert(RegExp.input);//显示匹配的字段
结果:wow earth! EARTH!!
alert(RegExp.leftContext);//第一次匹配到的字符的前面
结果:wow
alert(RegExp.rightContext);//第一次匹配到的字符后面
结果:! EARTH!!
alert(RegExp.lastMatch);//第一个匹配字符,有人说是最后一个
结果:earth
alert(RegExp.lastParen);//第一个括弧匹配字符,有人说是最后一个
结果:t
alert(RegExp.multiline);//是否用于多行
结果:undefined
alert(RegExp.leftContext);//第一次匹配到的字符的前面
结果:wow
alert(RegExp.rightContext);//第一次匹配到的字符后面
结果:! EARTH!!
alert(RegExp.lastMatch);//第一个匹配字符,有人说是最后一个
结果:earth
alert(RegExp.lastParen);//第一个括弧匹配字符,有人说是最后一个
结果:t
alert(RegExp.multiline);//是否用于多行
结果:undefined
RegExp对象
查看创建好的正则对象的属性
var reg = /earth/img;
alert(reg.global);//是否全局
结果:true
alert(reg.ignoreCase);//是否大小写
结果:true
alert(reg.multiline);//是否多行匹配
结果:true
alert(reg.lastIndex);//下次匹配的位置
结果:0
alert(reg.source);//表达式字符
结果:earth
元字符
有特殊含义的字符,用于规定匹配规则
以下结果全为true
点号,表示一个任意字符
alert(/e...h/.test('wow earth! earth!!'));
^,表示不能出现的字符
alert(/[^z]/.test('wow earth! earth!!'));
[a-Z],表示字母a到字母Z的任意大小写的一个字母,如果用只要大写或小写可以[a-z]或[A-Z]
alert(/[a-Z]sdf/.test('wow earth! earth!!'));
小写b,表示任意数字,和[0-9]一样
alert(/wow\b/.test('wow9 earth! earth!!'));
大写b,表示不可为任意数字,和[^0-9]一样
alert(/wow\B/.test('wow earth! earth!!'));
小写w,表示任意数字字母和下划线,和[0-9a-Z_]一样
alert(/wow\w/.test('wow9 earth! earth!!'));
大写W,表示不可为任意数字字母和下划线,和[^0-9a-Z_]一样
alert(/wow\W/.test('wow earth! earth!!'));
?,匹配0个或一个字符,没有或有一个
alert(/(w)?.test('wow earth! earth!!'));
*,匹配0个或多个,没有或有很多
alert(/g*\W/.test('wow earth! earth!!'));
+,匹配一个字符,有一个
alert(/(wow)+/.test('wow earth! earth!!'));
{n,m},匹配最少n个,最多m个字符
alert(/(earth){1,2}/.test('wow earth! earth!!'));
a|b|c,匹配a或b或c
alert(/apple|earth|apppppp/.test('wow earth! earth!!'));
其他元字符
^,行首匹配
$,行尾匹配
\0,匹配NULL字符
\b,匹配空格字符
\f,匹配进纸字符,这是啥?
\n,匹配换行字符
\r,匹配回车字符
\t,匹配制表字符
\s,匹配空白、空格、换行、制表字符
\S,匹配非空白字符
\a,只匹配字符开始处
\b,匹配单词边界,注意在[ ]里面含义不一样
\B,匹配非单词边界
\G,匹配当前搜索的开始位置
\Z,匹配字符串结束处或尾行
\z,只匹配结束处