在讲正则表达式之前,先说一下常用的字符串函数
var str=‘abc-def’;
1、str.search('c'); //返回第一次出现该字符的位置(这里的位置编号相当于数组下标,从0开始)。
2、str.substring(2,5);//截取从第2位置到第5位置的字符串(包含第二位置,不包含第5位置)。
str.substring(1);//截取从第1位置开始一直到结尾的字符串。
3、str.charAt(3);//返回第3位置的字符
4、str.split('-');//以'-'为字符分割,返回一个数组
5、str.match('a');//返回是‘a’字符的字符,其实返回的就是‘a’,这样使用没有意义,需配合正则表达式使用
6、str.replace('a','A');//把第一次出现‘a’的字符用‘A’替换。
一、什么是正则表达式?
制定一定的规则对字符串进行匹配
二、在js中,以RegExp对象为使用方式。
有两种表现风格
- js风格----------new RegExp("a","i")
第一个参数是需要匹配的字符串(可以接受变量),可以接受第二个参数是附加条件。比如上面意思是,匹配是‘a’的且不区分大小写
- perl风格-------/a/i
两个斜线之间写需要匹配的字符串(不可以接受变量),i为附加条件(不需要引号)。
我所理解的正则表达式:
有时,我们会对一些字符串进行处理,从一堆包含数字、汉字、英文的字符串中,把数字全部筛选出来,然后让他们做加法。思路就是先把数字全部选出来。举个例子如下字符串:
“上衣是2元,裤子是30元,Nike鞋是50元”
需要写正则表达式把数字筛选出来,首先写规则
var re=/\d\d/g;
//这样会把30、50筛选出来
var re=/[0-9][0-9]/g;
//这样会把30、50筛选出来
var re=/\d+/g;
//加号代表数量大于等于1,所以会把所有数字都筛选出来
\d | 数字 | [0-9] |
\w | 英文、数字、下划线 | [a-z0-9_] |
\s | 空白字符 | |
\D | [^0-9] | |
\W | [^a-z0-9_] | |
\S | 非空白字符 |
附加条件:
i 意为ignore,就是忽略大小写
g意为global,检测全部、而不是一个。
量词:
{n} 出现n次
{n,m} 出现最少n次,最多m次
{n,} 最少1次,最多不限
( )? 问号前面的可有可无
if(re.test(otxt.value))
//test方法意为判断字符串是否与re匹配的,有就是true。但是它只是检测一部分是否满足要求,如果前端或后端有非法字符,他还是返回true,所以要给他加上行首、行尾的限制。即 /^abc$/