JavaScript学习笔记【DAY15(2020.9.4)周五】
正则表达式:正确的规则( Regular Expression )是用于匹配字符串中字符组合的模式。在JavaScript中,正则表达式也是对象。
正则表达式是专门针对字符串而定义出来。
它是一组规则 通过特定的字符来表示不同的字符串类型;是一个引用类型的对象
标识符:g(全局);i(忽略大小写);m(多行匹配)
正则表达式组成部分:/表达体/修饰符
表达体部分:基本字符和元字符组成
基本字符:就是平时使用的字符串中的字符
正则表达式的特点
1、灵活性、逻辑性和功能性非常的强。
2、可以迅速地用极简单的方式达到字符串的复杂控制。
3、对于刚接触的人来说,比较晦涩难懂。比如:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
4、实际开发,一般都是直接复制写好的正则表达式. 但是要求会使用正则表达式并且根据实际情况修改正则表达式. 比如用户名: /^[a-z0-9_-]{3,16}$/
正则表达式的定义
1、构造函数定义 RegExp(正则表达式, 修饰符);
new RegExp("abc", “g”)
第一个参数是正则表达式的表达体
第二个参数是正则表达式的修饰符
2、字面量定义 /正则表达式/修饰符
/\d+/g
转义字符(元字符)
\d 所有的数字
\D 所有的非数字
\w 所有的数字字母下划线
\W 所有的非数字字母下划线
\s 所有的空白符
\S 所有的非空白符
特殊字符(元字符)
. 除了回车和换行之外的其它所有内容
() 分组 分组内是一个整体
[] 范围
[a-z]
[A-Z]
[0-9]
[0-9A-Za-z]
| 或者
[^] 范围取反
^ 开头
$ 结尾
量词符用来设定某个模式出现的次数
{} 数量 {正则里面表示数量的都是针对前面的一个字符(除非用小括号包裹)}
{10} 限定十个 不能多也不能少
{3,5} 最少三个 最多五个
{1,} 最少一个 最多无穷个
? 零个或一个
+ 一个或任意个 等同于(1,)
* 零个或任意个(数量) 等同于(0,)
匹配规则:一个正则字符匹配一个字符串字符
正则表达式方法
test(str); //用于检测字符串是否符合正则表达式的描述
str 被检测的字符串
返回值 布尔值 为true时,表示该字符串通过正则验证,为false时,表示该字符串没有通过正则验证
exec(str);
str 被检测的字符串
返回值 数组
当检测到内容时,数组成员是符合正则表达式的字符串
input 属性是原字符串
index 属性是位于原字符串的下标数字
groups 属性是undefined(可忽略)
当检测不到内容时,为undefined
注:当正则表达式拥有g修饰符时,每一次调用exec方法都会从上一次的检测位置继续检测,而不是从头开始检测。
字符串方法
(1)replace(drop, add);
drop 被替换下的内容
可以是字符串
可以是正则表达式
add 被替换上的内容
可以是字符串
可以是函数
函数的返回值是被替换上的内容
函数的参数
第一个表示匹配到的内容
第二个表示匹配到的内容的索引
第三个表示原字符串
如果正则表达式中有圆括号,则圆括号的内容会一一对应放在第二个参数位置及后面位置 原来的第二个参数和第三个参数会向后推移
(2)match(searchvalue | regexp) 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。
该方法类似 indexOf() 和 lastIndexOf(),但是它返回指定的值,而不是字符串的位置。
返回值存放匹配结果的数组。该数组的内容依赖于 regexp 是否具有全局标志 g。
如果 regexp 没有标志 g, 那么 match() 方法就只能在 stringObject 中执行一次匹配。如果没有找到任何匹配的文本, match() 将返回 null。否则,它将返回一个数组,其中存放了与它找到的匹配文本有关的信息。该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。除了这些常规的数组元素之外,返回的数组还含有两个对象属性。index 属性声明的是匹配文本的起始字符在 stringObject 中的位置,input 属性声明的是对 stringObject 的引用。
如果 regexp 具有标志 g,则 match() 方法将执行全局检索,找到 stringObject 中的所有匹配子字符串。若没有找到任何匹配的子串,则返回 null。如果找到了一个或多个匹配子串,则返回一个数组。不过全局匹配返回的数组的内容与前者大不相同,它的数组元素中存放的是 stringObject 中所有的匹配子串,而且也没有 index 属性或 input 属性。
(3)search(regexp) 方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。
regexp 该参数可以是需要在 stringObject 中检索的子串,也可以是需要检索的 RegExp 对象。
返回值 stringObject 中第一个与 regexp 相匹配的子串的起始位置。 如果没有匹配到则返回-1
注:search() 方法不执行全局匹配,它将忽略标志 g。该方法总是从字符串的开始进行检索。