正则表达式
正则表达式
正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
目录
基本写法
方式一:var reg = new RegExp('规则');
方式二:var reg = /规则/;
常用类型
/pattern/attribute
参数attribute
是一个可选字符串,常用属性有g
和i
g //全局匹配
i //区分大小写匹配
举例
var str = 'My name is Dctxf,He is a boy!';
var reg = /dctxf/i;
var reg2 =/is/g;
str.match(reg); //返回["Dctxf"]
str.match(reg2); //返回["is", "is"]
常用方法
text()
验证字符串中是否存在某字符串,并返回一个boolean
值。空格同样会被验证
//代码示例
var str = 'my name is dctxf';
var reg = /dctxf/; //var reg = /md/;
reg.test(str); //验证str里面是否存在dctxf 返回true
//如验证str里面是否存在yn 返回false
exec()
检索字符串中指定的值,并返回找到的值。若没有找到返回null
var str = 'my name is dctxf';
var reg = /dctxf/;
reg.exec(str); //返回dctxf
常用字符串正则方法
match()
匹配字符串中符合正则的字符串,并返回找到的字符
var str = 'My name is dctxf';
var reg = /dctxf/;
str.match(reg); //返回["dctxf"]
search()
搜索字符串中符合正则的字符串,并返回字符串位置
var str = 'My name is dctxf';
var reg = /dctxf/;
str.search(reg); //返回11
replace()
搜索字符串中符合正则的字符串,并替换找到的字符串
var str = 'My name is dctxf';
var reg = /dctxf/;
str.replace(reg,'xiaofeng'); //返回"My name is xiaofeng"
split()
搜索字符串中符合正则的字符串并按照此规则进行分割,然后返回分割后字符串组成的数组
var str = 'My name is dctxf';
var reg = /\s/; // \s=' ' 意思是空格
str.split(reg); //返回["My", "name", "is", "dctxf"]
常用正则
[0-9],[a-z]...
从*到*
var str = 'My name is dctxf';
var reg = /[a-d]/g; //[a-d]的字符
str.match(reg); //返回["a", "d", "c"]
衍生正则
[0-9] //包含0-9
[a-z] //包含a-z
[^0-9] //不包含0-9
[^a-z] //不包含a-z
[abc] //包含abc
[^abc] //不包含abc
[abc|def|xyz] //包含abc或包含def或包含xyz
a.e
查找单个字符串,除了换行和结束符
var str = 'My name is dctxf, we are friend';
var reg = /a.e/g;
str.match(reg); //返回["ame", "are"]
转义字符
\s //空白字符(空格,tab,换行,回车)
\S //非空白字符
\w //单词字符(字母,数字,下划线)
\W //非单词字符
\d //数字
\D //非数字
\b //单词边界
\B //非单词边界
\n //换行符
<!--下面的n代表任意字符串,x,y代表数字-->
n+ //包含至少一个n的字符串
n* //包含0或多个n的字符串
n? //包含0或一个n的字符串
n{x} //包含 x 个 n 的序列的字符串
n{x,y} //包含x或y个n的序列的字符串
n{x,} //包含至少x个n的序列的字符串
n$ //任何结尾为 n 的字符串
^n //任何开头为 n 的字符串
常见正则
汉字
[\u4e00-\u9fa5]
手机号
1[0-9]{10}
邮箱
[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?
身份证
[1-9][0-9]{16}[0-9]|[1-9][0-9]{16}x$
网址
[http://,https://][^\s]*