JS正则表达式
1、正则表达式是对字符串的操作,常用的字符串操作有:serch(查找) substring(获取子字符串的起始位置) chaAt(获取某个字符串) split(分割字符串到一个数组里)
2、match的用法
量词的概念:
什么是量词
出现的次数 {n,m},至少出现n次,最多m次 例子:查找QQ号
常用量词 {n,} 至少n次
* 任意次 {0,}
? 零次或一次 {0,1}
+ 一次或任意次{1,}
{n} 正好n次
<script> var str='asdf 34 656 cvs33'; var re=/\d+/g; //g 表示全局 如果去掉那么只匹配一个结果,g是将全部的匹配结果返回,+为量词表示连续 如果不用+计算机会把匹配结果全部拆分为单个的字符串 alert(str.match(re)); </script>
3、replace的用法
<script> var str='abc aaa erw'; var re=/a/g; alert(str.replace(re, '0')); </script>
4、search的用法
<script> var str='abcdef'; alert(str.search('u')); //位置, -1 如果存在则返回第一次出现的位置 如果不存在返回-1 </script>
5、split的用法
<script> var str='12-56-aaa-89'; var arr=str.split('-'); //结果为 12,56,aaa,89 alert(arr) </script>
6、substring的用法
<script> var str='abcdef'; //alert(str.substring(2, 5)); //不包括结束位置 alert(str.substring(1)); </script>
7、第一个正则表达式
<script> var str="abcdef"; //var re=new RegExp('b','i'); //i表示不区分大小写 var re=/a/i; alert(str.search(re)); </script>
8、方括号的使用
<script> var str='apc xpc ppc bpc spc tpc'; var re=/[apx]pc/g; alert(str.match(re)); </script>
任意字符 [abc] 例子:o[usb]t——obt、ost、out
范围 [a-z]、[0-9] 例子:id[0-9]——id0、id5
排除 [^a] 例子:o[^0-9]t——oat、o?t、o t
9、过滤标签的正则写法
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script> 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>
10、过滤敏感词
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script> window.onload=function() { var oTxt=document.getElementById("txt1")[0]; var oTxt2=document.getElementById("txt2")[0]; var oBtn=document.getElementById("btn1")[0]; oBtn.onclick=function() { var re=/北京|百度|淘宝/g; oTxt2.value=oTxt.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>
11、校验邮箱
思路:邮箱开始为 字母、数字、下划线+@字母、数字+.+字母
字母数字下划线的正则为 \w+@[a-z0-9]+.+[a-z] 思路出来了代码也就出来了
PS 我们用到test()的时候,只要代码中含有匹配内容就返回true 所以我们需要加上^开始位置+$结束位置
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <script> 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>