什么是正则?
是一种规则,一种模式,字符串的处理工具
字面量
var reg=/ /
元字符和反义
。一个除了换行符和行结束符以外的字符
\w 单词字符(下划线、数字、字母)
\W 非数字、字母、下划线
\d 数字(0-9)
\D 非数字
\s 空白
\S 非空白
\^ 开始符
\b 匹配边界
\B 匹配非单词边界
\n 换行
量词
+ 一个或多个
* 0个或多个
? 0个或一个
x|y 匹配x或y其中一个
{x} 必须是x个 例如:a{5} //5个a
{x,y} 最少x个,最多y个 例如:a{3,5} //最少3个a,最多5个a
{x,} 最少x个 例如:a{3,} //最少3个,最多无限制
字符类
[abc] 匹配括号里任意一个字符
[^abc] 匹配除括号里的任意字符(一个)
[0-9] 匹配从0-9的任意一个数字
[a-z] 匹配从小写 a 到小写 z 的字符
[A-Z] 匹配从大写 A 到大写 Z 的字符
[A-z] 匹配从大写 A 到小写 z 的字符
修饰符
/g global,表示全文搜索;若不添加g,则搜索到第一个匹配结果即停止匹配
/i ignore case,忽略大小写;若不添加i,则默认大小写严格匹配
/m multiple lines,多行搜索
JS的test()方法、exec()方法
RegExp.prototype.test(str)
作用:
测试字符串参数中是否存在所匹配正则的字符串。若存在则返回true,否则返回false
RegExp.prototype.exec(str)
返回值
返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
重要事项: 如果在一个字符串中完成了一次模式匹配之后要开始检索新的字符串,就必须手动地把 lastIndex 属性重置为 0。
提示: 请注意,无论 RegExpObject 是否是全局模式,exec() 都会把完整的细节添加到它返回的数组中。这就是 exec() 与 String.match() 的不同之处,后者在全局模式下返回的信息要少得多。因此我们可以这么说,在循环中反复地调用 exec() 方法是唯一一种获得全局模式的完整模式匹配信息的方法。
JS字符串对象方法
String.prototype.search(reg)
search()方法: 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。没有匹配到返回-1,不执行全局匹配,忽略标志g
String.prototype.match(reg)
match()方法: 可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
String.prototype.split(reg)
split()方法: 将字符串分割为字符数组
String.prototype.replace()
replace()方法: 查找字符并替换为新的字符,or替换一个与正则匹配的子串