1.什么是正则表达式?
正则表达式,全称“Regular Expression”,在代码中常简写为regex、regexp或RE。正则表达式,就是用某种模式去匹配一类字符串的公式。
众所周知,在程序开发中,难免会遇到需要匹配(match)、查找(seach)、替换(replace)、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。
在大多数大型网站都有注册功能,注册的表单都会有相应的验证,例如姓名表单要求输入汉字,邮箱表单必须要符合电子邮箱的模式。那程序是怎么判断用户输入的内容是否符合相应表单的要求呢?这就用到了正则表达式。
2.正则表达式的定义方法
正则表达式的定义共有2种方式:
1. 显式定义(构造函数)
let 变量名 = new RegExp("正则表达式模式");
2. 隐式定义(字面量)
let 变量名 = /正则表达式模式/
举例:
let myregex = new ReExp("\d+");
上面语句等价于下面:
let myregex = /\d+/;
3.正则表达式常用的方法
1. test
正则去匹配字符串,如果匹配成功就返回真,匹配失败返回假
写法:正则.test(字符串)
如:
var str='abcdef';
var re=/b/;
alert(re.test(str));
2. search
正则去匹配字符串,如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回-1
写法:字符串.search(正则)
如:
var str="abcdef";
var re=/b/;
alert(str.search(re));
//返回1
var re=/w/;
//返回-1
var re=/B/;
//返回-1
3. match
正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null 写法:字符串.match(正则)
比如上面例子要找出数字
var str="dgfhfgh254bhku289fgdhdy675";
var re=/\d+/g;
alert(str.match(re));
//输出2
4. replace
正则去匹配字符串,匹配成功的字符被新的字符串替换
replace的写法:字符串.replace(正则,新字符串)
如:
var str="aaa";
var re=/a/;
str=str.replace(re,"b");
alert(str);
//输出baa
5. exec
正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,
index:表示第一个匹配的字符在原字符串中的位置,
input:表示原字符串,
groups:表示当初中命名的分组时匹配到的分组对象;如果匹配不成功,就返回null
写法:正则. exec(字符串)
比如上面例子要找出数字
var str="dgfhfgh254bhku289fgdhdy675";
var reg=/\d+/g;
alert(reg.exec(str));
//输出2
4.常用元字符
普通字符就是a~z、0~9这类常见的字符。其中特殊字符又称为“元字符”。元字符之所以叫特殊字符,就是它的特点跟普通字符不一样。例如邮政编码中,我们限定只能输入6个数字,那“数字”这个概念怎么理解呢?这个时候我们就用到了元字符\d来代替。
5.连接范围
一、连接符简介
学习了正则表达式常用元字符,我们知道要想匹配数字,正则表达式就要这样写:
[123456789] [1-9]
其中[ ]表示匹配方括号内的任一字符。在正则表达式中,匹配数字或者英文字母的书写非常不方便。因此,正则表达式引入了连接符“-”来定义字符的范围。
6.限定符-量词
7.定位符-边界
一、什么是定位符?
在正则表达式中,定位符,说白了,就是限定某些字符出现的位置
常用的正则表达式定位符如下:
8.修饰符
g: global 全文搜索,不添加,搜索到第一个匹配停止
i: ignore case 忽略大小写,默认大小写敏感
m: multiple lines 多行搜索
9.特殊转义符
正则特殊转义符
\f 匹配换页符
\n 匹配换行符
\r 匹配回车符
\t 匹配制表符
\v 匹配垂直制表符
\\ 匹配\
\" 匹配 "
\' 匹配 '
10.优先级顺序
总结
正则字符
常用元字符 、连接符、限定符、定位符 修饰符、选择符、转义符 。如: ^ | [1-9] ? $