首先什么是正则表达式?
正则表达式用于定义一些字符串的规则,计算机根据其判断字符串是否符合规则。
正则表达式的本质是对象。两种定义方式,一种根据new关键字创建,一种是字面量的形式创建。如下:
1.var 变量=new RegExp("正则表达式","匹配规则")
;
2.var 变量=/内容/匹配模式;
匹配模式有两种:
i | g |
忽略大小写 | 全局匹配模式 |
例子:检测str是否符合正则表达式(含有a的意思)
var reg=/a/;
var str="abc";
console.log(reg.test("abc"));
1.那么怎么检查一个字符串含有a或b呢?
var reg=/ab/;
写成这样的话 |
[]的意思就是“或”
2.检查一个字符串是否含有abc,adc,aec就是var reg=/a[bde]c/
;
扩充:1.var reg=/[^ab]/;
意思是除了自身
2.var reg=/^ab/i
;以ab整体开头,不区分大小写
3.var reg=/a$/;
是否以a结尾
4.var reg=/^a$/;
意思是否完全符合正则表达式
正则表达式匹配方法使用:
1.split 以·····进行分割
var str="1a2b3c4d6f";
var result=str.split(/[a-z]/);
console.log(result);//结果是true下面这个
这是个对象最后还有个空是因为最后的f被去掉了,这个方法不指定全局也会替换所有的字母
2.search搜索指定内容返回索引号
全局模式也不起作用,只返回第一个元素的位置。
3.match从一个字符串中提取符合条件的内容
返回的是对象
4.replace()参数1:被替换的内容2.新的内容
默认只会替换第一个,但可以设置全局匹配模式
var str="1a2b3c4d6aa";
console.log(str.replace(/a/gi,"@_@"));
当你检查是否含有1000个a的时候总不可能敲1000个a吧,所以写成var reg=/a{3}/;
拓展一下:
1.var reg=/ab+c/;
表示至少一个b相当于b{1,};
2.var reg=/ab*c/;
表示0个及多个相当于b{0,}
2.var reg=/ab?c/;
表示0个或一个相当于b{0,1}
检查一个字符是否含有.:
var reg=/./;
这样是错误的,因为.表示任意字符的意思,得使用转义字符来表示
使用构造函数时,参数是一个字符串,而\是字符串中的转义字符
转义字符 | 表示内容 |
\w | 表示任意字母、数字、_ |
\W | 除了数字、字母、_ |
\d | 任意的数字[0-9] |
\D | 除了数字[^0-9] |
\s | 空格 |
\S | 除了空格 |
\b | 单词边界 |
比如去除字符串中的空格:=>使用’'替换空格
var str=" hello ";
str=str.replace(/\s/g,'')
console.log(str);
得赋值,不然没有区别,这里只替换了前面的空格
正确的str=str.replace(/^\s*|\s*$/g,'')
*换成+也行
使用构造函数是
var reg=new RegExp("\\s","g");
举例:创建一个正则表达式,是否是一个合法的手机号
2.电子邮件的正则表达式(可以网络查询,大多数正则表达式网络都有)