正则表达式基础——1
复习字符串操作
search 查找
显示字符的位置,若不存在该字符,则返回-1
substring 获取子字符串
var str = 'asdfghjk'
alert(str.substring(2,5));
返回结果为:dfg
也可以取剩余所有字符
charAt 获取某个字符
split 分割字符串,获得数组
字符串的切分
找出字符串中的所有数字
var str = '12 dwhui d32e -0vfd o0-=c nio034';
alert(str.match(/\d+/g));
正则表达式基础——2
什么是正则表达式
什么叫“正则”
规则、模式
强大的字符串匹配工具
是一种正常人类很难读懂的文字
RegExp对象
JS风格——new RegExp(“a”、“i”)
perl风格——/a/i
var re = new RegExp('a');
var str = 'asdfghj';
alert(str.search(re));
结果为0,表示a在第0个位置
字符串与正则配合——1
search
字符串搜索
返回出现的位置
忽略大小写:i——ignore
判断浏览器类型
var re = new RegExp('a','i');或者var re= /a/i
var str = 'asdfghj';
alert(str.search(re));
match
获取匹配的项目
量词:+
量词变化:\d、\d\d和\d+
全局匹配:g——global
例子:找到所有数字
var re = /\d;
获取第一个数字
var re = /\d/g;
获取字符串中所有的数字,但一个个分开
var re = /\d+/g;
var str = 'aasd s0c sdf22 5467m';
alert(str.match(re));
获取若干个数字
replace
替换所有匹配
返回替换后的字符串
var str = 'aasd s0c sdf22 5467m';
var re = /a/g;
alert(str.replace(re,'0'));
例子:敏感词过滤
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
window.onload = function (){
var oTxt1 = document.getElementById('txt1');
var oTxt2 = document.getElementById('txt2');
var oBtn = document.getElementById('btn1');
oBtn.onclick = function(){
var re = /北京|百度|淘宝/g;
oTxt2.value = oTxt1.value.replace(re,'***');
}
}
</script>
</head>
<body>
<textarea id="txt1" rows="10" cols="40"></textarea><br>
<input id="btn1" type="button" value="过滤" /><br>
<textarea id="txt2" rows="10" cols="40"></textarea>
</body>
</html>
字符串——1
任意字符
【abc】
例子:o[usb]t——obt、ost、out
var str = 'apc xpc ppc bpc spc tpc';
var re = /[apx]pc/g;
alert(str.match(re));
结果为apc ppc xpc
范围
【a-z】、【0-9】
例子:id[0-9]——id0、id5
例如找到所有数字:
var str = '12 dwhui d32e -0vfd o0-=c nio034';
alert(str.match(/[0-9]+/g));
排除
【^a】
例子:o[^0-9]t——oat、o?t、o t
组合
【a-z 0-9 A-Z】
实例:偷小说
过滤HTML标签
自定义innerText方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
window.onload = function (){
var oTxt1 = document.getElementById('txt1');
var oTxt2 = document.getElementById('txt2');
var oBtn = document.getElementById('btn1');
oBtn.onclick = function (){
var re = /<[^<>]+>/g;
oTxt2.value = oTxt1.value.replace(re, '');
}
}
</script>
</head>
<body>
<textarea id="txt1" rows="10" cols="40"></textarea><br>
<input id="btn1" type="button" value="转换" /><br>
<textarea id="txt2" rows="10" cols="40"></textarea>
</body>
</html>
转义字符
.(点)——任意字符
\d、\w、\s
\D、\W、\S
var re = /\d/;
var str = 'aasd s0c sdf22 5467m';
alert(str.search(re));
第一个数字所在的位置
\d 数字 [0-9]
\w 英文、数字、下划线 [0-9 a-z _]
\s 空白字符 空格键 tab键等
\D [^0-9]
\W [^0-9 a-z _]
\S 非空白字符
量词
什么是量词
出现的次数
{n,m},至少出现n次,最多m次
例子:查找QQ号
常用量词
{n,} 至少n次
* 任意次{0,}
? 零次或一次{0,1}
+ 一次或任意次{1,}
{n} 正好n次
常用正则例子
表单校验实例
校验邮箱
行首行尾
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
window.onload = function (){
var oTxt = document.getElementById('txt1');
var oBtn = document.getElementById('btn1');
oBtn.onclick = function (){
var re =/^\w+@[a-z0-9]+\.[a-z]+$/i;
if (re.test(oTxt.value)) {
alert('合法邮箱');
} else {
alert('写错了');
}
}
}
</script>
</head>
<body>
<input type="text" id="txt1" />
<input type="button" value="校验" id="btn1" />
</body>
</html>