正则表达式
两种方式定义正则表达式:
一种是字面量:
reg = / 正则表达式/匹配模式
一种是构造函数:
var reg = new RegExp(" “,” "); //两个参数包含两个字符串
第一个参数是需要约束的字符串(正则表达式),第二个参数(匹配模式)
匹配模式有
i表示忽略大小写
g表示在字符串中找出全部需要匹配的字符串
注意一下几个:
^表示前缀,
^还表示范围之外的字符
/^abcde$/固定这个值为abcde
基本用法:
\w-------------单词字符—[0-9][a-z][A-Z] _
\d--------------数字字符—[0-9]
\b--------------单词边界—找独立的一个单词\bchild\b
\s--------------空白字符串
\xxx------------八进制
\xdd-----------十六进制
\uxxxx--------unicode编码
\n--------------换行符
x+匹配包含至少一个x的字符串
x?0个或者1个
x* 匹配包含0个或多个x的字符串
x{n} n个x
x{a,b}含有a个至b个的
x{n,} 至少n个X
[a-z ]表示a至z的任意字母
[A-Z]表示A-Z的任意字母
[a-Z]表示任意的字母
许多元字符要求在试图匹配它们时特别对待。若要匹配这些特殊字符,必须首先使字符"转义",即,将反斜杠字符\ 放在它们前面。下表列出了正则表达式中的特殊字符:
【 标记一个中括号表达式的开始。要匹配 [,请使用 [。
*匹配前面的子表达式零次或多次。若要匹配 * 字符 请 使用 *
. 匹配除换行符 \n 之外的任何单字符。要匹配 . 请使用 .
exec的用法
var reg = /e/;
var str = "_23yy2edcWlyyy3bnlyyy2ed";
var obj = reg.exec(str);
document.getElementById("demo").innerHTML = obj[0]+"看 " +obj.index+"看"+obj.input;
split的用法
拆分的作用
var reg = /[0-9]/;
str = "ab8ca1b;"
var res = str.split(reg); //用数字【0-9】拆分str字符串
let num = "1023005sssvxw6";
let reg = num.split(/0+/);
console.log(reg) //以0 划分为字符数组
replace的用法
替换的作用
参数:
1、被替换的内容
2、新的内容
str.replace(‘a’/gi,"&&&") 表示只要str中有a,无论大小写,都用"&&&"替换str中的"a"或A
let reg = /0/g
let num = "1023005sssvxw6";
num.replace(reg,"a") //全部把’0‘替换为“a”
电话号码的正则表达式
reg = /^1[3-9][0-9]{9}/
邮箱正则表达式
reg = /\S*@\S*\.\S*/
前后空格正则表达式
reg = /^\s*|\s$/;
let tel =‘132 0803 3621’;
或者是短横线:
let tel =‘132-0803-3621’;
或是其他的连接字符。
然后空格或短横线的位置也不固定,例如可能是下面这样:
let tel =‘132 080 33621’;
请实现,无论变量tel使用什么字符分隔,无论分隔位置在哪里,都过滤成连续的11位数字,类似’13208033621’。
if(tel.match(/\d/g)&& tel.match(/\d/g).length == 11)
console.log(tel.replace(/\D/g,''))