今天学习了正则表达式的一些基础知识,
1.概念:
首先了解了一下正则表达式的含义:一些便于计算机识别的规则,能够快速方便地对字符进行操作。
正如我们人都是有常识的,当我们遇到像:15733541865,[email protected]这样的东西想都不用想就知道会是一个手机号,或者一个邮箱地址。
而对于计算机而言,也有一写规则表达式,它是能令计算机读懂的(所以对我们来说看起来比较费劲),也相当于计算机的常识,一遇到就知道你要干什么。
2.创建正则对象:
var re = RegExp(); // js表达方式
var re = / /; // perl 表达方式(简便)
3.基础用法:
var str = ‘abcdesg‘;
var re = /abc/;
alert(str.search(re)); ----查找符合re表达式的第一个字符所在的位置
var re = /a/i ; ----i表示不区分大小写
var re = /a/g ; ------g表示选中所有满足a的字符
var re = /a | b |c / ------- 用|来表示多个查找字符
var re = / \d /; -----转义 表示数字digital
var re = /\w/ -----转义 word 字母数字下划线(应用用户名检验)
var re= /\s/ -----转义 空格
var re= / \D/ -----除了数字
var re= / \W/ -----除了word
var re=/ \S / -----除了空格
var re = /\d+/g --------- +代表许多,可以显示不同长度的数字
str.replace(/a/g i ,’T’); ---------替换(g)全部a,无论大小写(i),变成T,
var re= /1[abc]2/ -------用[]来表示 或者 相当var re =/1a2|1b2|1c2/
var re = /<. +>/g -------- . 表示所有字符,+表示字符任意长度
var re = /<[ ?<>]>/g; -----------[^<>]表示不能拥有这种情况
{n,m} ------至少出现n次,最多m
{n,} --------至少n次
* -----------任意次 {0,}
? ---------零次或一次 {0,1}
+ ---------一次或任意次{1,}
{n} ---------正好n次
/?\s+|\s+$/ -----------去除行首行尾空格
[\u4e00-\u9fa5] ---------------匹配中文:
4.应用例子:
4.1过滤敏感词
转换前<textarea id="text1" rows="10" cols="42"></textarea><br/> <input type="button" id="btn1" value="点击转换"/><br/> 转换后<textarea id="text2" rows="10" cols="42"></textarea>--><script> var oText1 = document.getElementById(‘text1‘); var oText2 = document.getElementById(‘text2‘); var oBtn = document.getElementById(‘btn1‘); oBtn.onclick= function(){ var re = /fuck|shit|stupied/g; //将敏感词用正则表式表示出来 oText2.value = oText1.value.replace(re,‘*‘); //若otext1中的输入的value有敏感词,则将替换为* }; </script>
4.2QQ号验证:
QQ号的组成一般由5-11位数字,并且第一位不能为0
<input type="text" id="text1"> <input type="button" value="登陆QQ" id="btn1"/> <script> //分析QQ号组成,第一位:1-9数字; 由5-11位组成; var oText1 = document.getElementById(‘text1‘); var oBtn = document.getElementById(‘btn1‘); var re = /[1-9]\d{4,10}/g; //{4,10}表示最少出现一次,最多出现10次 oBtn.onclick = function(){ if(oText1.value.match(re)){ alert(‘欢迎qq‘); }else{ alert(‘您输入的不是qq‘); } }; </script>
4.3邮箱验证:
邮箱组成:[email protected] ---------- 字母|数字|下划线 @ 英文 . 英文(2-4长度)
<input type="text" id="text1"> <input type="button" value="登陆QQ" id="btn1"/> <script> var oText1 = document.getElementById(‘text1‘); var oBtn = document.getElementById(‘btn1‘); //var re=/\[email protected][a-z0-9]+\.[a-z]{2,4}/g; //缺点:只要字符部分符合要求就会提示true var re=/^\[email protected][a-z0-9]+\.[a-z]{2,4}$/g;//行首行尾全部符合要求 oBtn.onclick = function(){ if(oText1.value.match(re)){ alert(‘是邮箱!‘); }else{ alert(‘不是邮箱!‘); } };