正则表达式基础-1
复习字符串操作
search 查找 没到找返回-1
substring 获取子字符串 不包括结束位置
charAt 获取某个字符
split 分割字符串,获得数组
找出字符串中的所有数字
用传统字符串操作完成
用正则表达式完成
var str='12 fff 468 er254 4234 -=-=fa14';
alert(str.match(/\d+/g));
//选出所有的数字
普通的找法:
var arr=[];
var tmp='';
for(var i=0;i<str.length;i++)
{
if(str.charAt(i)>='0' && str.charAt(i)<='9')
{
tmp+=str.sharAt(i);
}else{
if(tmp)
{
arr.push(tmp);
tmp='';
}
}
}
if(tmp)
{
arr.push(tmp);
tmp='';
}
alert(arr);//选出所有数字
正则表达式基础-2
什么是正则表达式
什么叫“正则” 规则表达式
规则、模式
强大的字符串匹配工具
是一种正常人类很难读懂的文字
RegExp对象
JS风格——new RegExp("a", "i")
perl风格——/a/i
字符串与正则配合——1
search
字符串搜索
返回出现的位置
忽略大小写:i——ignore
判断浏览器类型
match 把所有匹配的东西全都取出来
var str='adfa 26 41425 daf'
var re=/\d/; // \d转义
alert(str.search(re));找第一个出现的数字 5因为2在第5的位置
var str='adfd 34 656 vad33';
var re=/\d+/g; //global 找到全部数字3,4,6,5,6,3,3 不加g只会选3 加+ 34,656,33
alert(str.match(re));
获取匹配的项目
量词:个数
+:若干(多少都可以)
量词:+
量词变化:\d、\d\d和\d+
合局匹配:g——global
例子:找出所有数字
replace
替换所有匹配
返回替换后的字符串
例子:敏感词过滤
var str='abc aaa erw';
var re=/a/g; //正则
alert(str.replace('a', '0'));//如果不配合正则只替了第一个a
敏感词过滤:
window.onload=function(){
var oTxt1=document.getElementById('txt1');
oTxt2=document.getElementById('txt2');
oBtn=document.getElementById('btn1');
oBtn.onclick=function()
{
var re=/北京|百度|淘宝/g;
oTxt2.value=oTxt1.value.replace(re,'***');
}
}
字符串——1
元字符——方括号
任意字符
[abc]pc 或的意思
apc bpc cpc
var str='apc xpc ppc bpc spc tpc';
var re=/[apx]pc/g; apc xpc ppc
alert(str.match(re));
例子:o[usb]t——obt、ost、out
范围
[a-z]、[0-9]
例子:id[0-9]——id0、id5
排除
[^a]
例子:o[^0-9]t——oat、o?t、ot
字符串——2
组合
[a-zO-9A-Z]
实例:偷小说
过滤HTML标签
自定义innerText方法
转义字符
.(点)——任意字符 尽量不用
\d、数字[0-9]
\w、英文、数字、下划线 [a-z0-9_]
\s、 空白字符
\D、除了[^0-9]
\W、除了英文、数字、下划线 [^a-z0-9_]
\S 非空白字符
过滤HTML标签:
<除了<>以外的字符>
window.onload=function(){
var oTxt1=document.getElementById('txt1');
oTxt2=document.getElementById('txt2');
oBtn=document.getElementById('btn1');
oBtn.onclick=function()
{
var re=/<[^<>]+>/g;
oTxt2.value=oTxt1.value.replace(re,'');
}
}
量词
什么是量词 个数
固定电话8位数
01234567
[1-9]\d{7} 第一位1-9
出现的次数
{n,m},至少出现n次,最多m次
例子:查找QQ号 [1-9]\d{4,10}
常用量词
{n,} 至少n次
* 任意次{0,}
? 零次或一次{0,1}
+ 一次或任意次[1,]
{n} 正好n次
? 零次或一次{0,1} 可有可无
010-85954152-102 区号和分机号
(0\d{2,3}-)?[1-9]\d{7}(-\d{1,5})?
常用正则例子
表单校验实例
校验邮箱
行首行尾
校验邮箱:
一串英文、数字、下滑线@一串英文、数字.一串英文
转\w+@[a-z0-9]+\.[a-z]+
window.onload=function(){
var oTxt=document.getElementById('txt1');
oBtn=document.getElementById('btn1');
oBtn.onclick=function()
{
var re=/^\w+@[a-z0-9]+\.[a-z]+$/i;
if(re.test(oTxt.value))
{
alert('合法的邮箱');
}else
{
alert('你丫写错了');
}
};
};
test 字符串一部分符合要求,就是true
^ 行首
$ 行尾