全称:正则表达式(regular expression)。简称:RegExp。
一种模式,匹配符合表达式限制的字符串。
示例:寻找超链接。
// 待查询的字符串str。
var str = " 百度";
// 查询方法;直接量创建法——searchMethod1
var searchMethod1 = /^.*<\/a>$/ig;
// 查询方法;对象创建法——searchMethod2
var searchMethod2 = new RegExp("/^.*<\/a>$/", "ig");
// 取用
searchMethod1.test(str);
处理判断、获取、替换、删除、增加较为复杂的字符串。
修饰符 | 含义 | 用法 |
---|---|---|
i | 忽略大小写查询 | /正则表达式/i |
g | 全局查询所有(找到所有符合要求的字符) | /正则表达式/g |
m | 多行查找 | /正则表达式/m |
word(单词)、digit(数字)
元字符 | 含义 | 用法 |
---|---|---|
\w | 单词字符 | /\w/g 全局查找包含单词的字符串 |
\W | 非单词字符 | /\W/g 全局查找包含非单词的字符串 |
\d | 数字 | /\d/g 全局查找数字的字符串 |
\D | 数字 | /\D/g 全局查找非数字的字符串 |
\b | 单词边界 | /\b/g 全局匹配单词边界 |
\B | 非单词边界 | /\B/g 全局非单词边界 |
space(空白)
元字符 | 含义 | 用法 |
---|---|---|
\s | 空白 | /\s/g 全局查找空白的字符串 |
\S | 非空白 | /\S/g 全局查找非空白的字符串 |
\n | 换行符 | /\n/g 全局查找换行符 |
\f | 换页符 | /\f/g 全局查找换页符 |
\r | 回车符 | /\r/g 全局查找回车符 |
\t | 制表符 | /\t/g 全局查找制表符 |
\v | 垂直制表符 | /\v/g 全局查找垂直制表符 |
元字符 | 含义 | 用法 |
---|---|---|
. | 任何字符(除了换行符) | /h.t/g 全局查找以h开头,t结尾的字符串 |
量词 | 含义 | 用法 |
---|---|---|
x+ | 至少一个 x | |
x* | 0个x或者多个x。 | |
x? | 至多一个x。 | |
x{m} | m个x。 | |
x{m,n} | m-n个x。 | |
x{m,} | 至少m个x。 | |
x$ | 以x结尾。 | |
^x | 以x开头。 | |
?=x | 后接x的字符串。 | |
?!x | 后不接x的字符串。 |
作用:确定优先级。
或者——|。作用:选择。
作用:确定范围。闭区间内查找,只要符合中括号内要求即可。
量词 | 含义 | 用法 |
---|---|---|
[xxxx] | 中括号内任何字符 | |
[^xxxx] | 不在方括号内的字符 | |
[0-9] | 0 - 9 数字 | |
[a-z] | a - z 字母 | |
[A-Z] | A - Z 字母 | |
[A-z] | A - z 字母。 | |
[a-zA-Z0-9] | 数字或字母 |
语法:/pattern/attributes
var str = "abghtjbfjjbv";
var pattStr = /t/i;
// 特殊含义的字符不需要转义
document.write(pattStr);
// 结果为:t
语法:var 正则对象名 = new RegExp(pattern, attributes)
var str = "abghtjbfjjbv";
var pattStr = new RegExp("t","i");
// 可字符串拼接。
document.write(pattStr);
// 结果为:t
var str = "abghtjbfjjbv";
var pattStr1 = new RegExp("t","i");
var p1 = pattStr1.global;
var pattStr2 = new RegExp("t","g");
var p2 = pattStr2.global;
var pattStr3 = new RegExp("t");
var p3 = pattStr3.global;
document.write(p1,p2,p3);
// 结果为:false,ture,false
var str = "abghtjbfjjbv";
var pattStr1 = new RegExp("t","i");
var p1 = pattStr1.global;
var pattStr2 = new RegExp("t","g");
var p2 = pattStr2.global;
var pattStr3 = new RegExp("t");
var p3 = pattStr3.global;
document.write(p1,p2,p3);
// 结果为:ture,false,false
var str = "abghtjbfjjbv";
var pattStr1 = new RegExp("t","m");
var p1 = pattStr1.global;
var pattStr2 = new RegExp("t","g");
var p2 = pattStr2.global;
var pattStr3 = new RegExp("t");
var p3 = pattStr3.global;
document.write(p1,p2,p3);
// 结果为:ture,false,false
作用:获取RegExp对象的查找字符的位置。
注意:使用该属性时,修饰符中必须包含g。
var str = "abghtjjbfjjbv";
var pattStr2 = new RegExp("j","g");
pattStr2.test(str);
var p2 = pattStr2.global;
document.write(p2);
// 结果为:6。注意该处位置起始值为1。
作用:获取RegExp对象的原字符串。
var str = "abghtjjbfjjbv";
var pattStr2 = new RegExp("j","g");
document.write(pattStr2.source);
// 结果为:j。
作用:编译正则表达式
var str = "abghtjjbfjjbv";
var pattStr2 = new RegExp("j","g");
var p2 = str.replace(pattStr2,"J")
document.write(p2);
// 结果为:abghtJJbfJJbv。
pattStr2.compile("b","g");
p2 = str.replace(pattStr2,"J")
document.write(p2);
// 结果为:aJghtjjJfjjJv。
作用:检索字符串中指定的值。返回找到的值
var str = "abghtjjbfjjbv";
var pattStr2 = new RegExp("j","g");
var p2 = pattStr2.exec(str)
document.write(p2);
// 结果为:j。无时用null
作用:是否有指定的值。返回 true 或 false。
var str = "abghtjjbfjjbv";
var pattStr2 = new RegExp("j","g");
var p2 = pattStr2.test(str)
document.write(p2);
// 结果为:ture。无时用false
作用:替换掉已知字符
语法:字符串.replace(正则表达式或字符串, replacement)
说明:replacement。替换直接字符串或返回值为字符串的函数
// 把所有j变为A。
var str = "abghtjjbfjjbv";
var p2 = str.replace(/j/g,"A");
document.write(p2);
// 结果为:abghtAAbfAAbv
// 把“小张”换成“小明”。
var str = "小张,吃饭了!";
var p2 = str.replace(/小张/g,"小明");
document.write(p2);
// 结果为:abghtAAbfAAbv
var str = "abght jjbf jjbv";
// 单词首字母大写。
var p2 = str.replace(/\b\w+\b/g,function(word){return word.substring(0,1).toUpperCase()+word.substring(1)});
document.write(p2);
// 结果为:Sbght Jjbf Jjbv
// 删除所有j。
var str = "abghtjjbfjjbv";
var p2 = str.replace(/j/g,"");
document.write(p2);
// 结果为:abghtbfbv
语法:字符串.search(正则表达式)
返回值:有时,第一次匹配的位置。无时,-1。
var str = "abghtjjbfjjbv";
var pattStr2 = new RegExp("j");
var p2 = str.search(pattStr2);
// var p2 = str.search(/j/);
document.write(p2);
// 结果为:5
语法:字符串.match(正则表达式)
返回值:有时,相匹配的值。无时,null。
var str = "abgd1ht5jjb6fjjbv";
var p2 = str.match(/\d+/g);
document.write(p2);
// 结果为:1,5,6