javascript入门基础篇重点 第十六节----正则表达式

来源:互联网 发布:软件无线电系统架构 编辑:程序博客网 时间:2024/04/28 16:21
正则表达式的两种定义方式:

            /  /  或者  new RegExp(); 

正则表达式
         规则 ----> 用来匹配字符串的一套规则
正则表达式的写法:
             / /
         new RegExp();当正则里面传参是变量的时候
         test:
         正则.test(字符串)   匹配成功返回true  不成功false


正则表达式 / / 用法

例如;

var str = 'sadKery23你好';
var reg = /23你/;
alert(reg.test(str));------>匹配23你


正则表达式  new RegExp()用法

var str = 'sadKery23你好';
    var x = "Kery";
    var reg = /x/;----------------------->当把kery赋值到x里面的时候在交由/ /进行判断的时候/x/里面的会变为匹配str里面有
    var reg = new RegExp(x);         没有x这个字符,而不是匹配赋给x的kery这个值,所以要用到new RegExp()这种方法
alert(reg.test(str));


正则表达式之转义符号(\d 、\s 、\w等转义字符)

 转义:
           
\把一些具有意义的某些字符变成没有特殊意义
   \s  空字符
   \S  字符串为" "就是false,里面有内容就是true

   \d  数字 0-9
   \D  非数字

   \w  字符(数字、字母、_)
   \W  非字符

   .   任意字符
   \.  真正的点

   \n  换行符
   \t  制表符

   \b  独立的部分   英文单词

例题:
 var str = "one two";
 var reg = /\S/;
  
 var reg = /\w/;
 var reg = /\./;

 var reg = /\bone\b/;
 alert(reg.test(str));

知识点:

例1:

var str = "abc def";
var x = "abc";
var reg = new RegExp("\b"+x+"\b");----->当匹配独立的abc字符时进行转义字符
\b不能写成"\b"(因为在双引号里面代表

alert(reg.test(str));                                      \b变为无特殊意义应该改为"\\b")而整个表达式也该改为("\\b"+x+"\\b")


例2:

var str="123/456";

var reg=/ / /;------------->当用正则表达式//匹配str里面的/的时候浏览器会报错,需要将reg表达式改为/\/ /用反斜杠将/

alert(reg.test(str));       义为没有特殊含义的字符方便查找


正则表达式之量词(+ / * / ?)

量词:
   {}
   {1,5}   1<=n<=5
   {1,}    1<=n
   {3}     3=n

   {1,}    +     一次或多次
   {0,}    *      零次或多次
   {0,1}   ?   零次或一次  
 match:
   str.match(reg) 匹配成功把匹配的字符放入数组,不成功返回null

例题:

var str = "a2ry35234adb";
var reg = /\d{2,4}/;结果为3523------>{2,4}表示匹配str里面最少连续两个以上或四个以下数字(例:a后面数字2只有其本
var reg = /\d+/g;                                
身一个数字不能满足最低要求2个,只能往后寻找匹配出3523)
alert(str.match(reg));


正则表达式之标识(g / m /i 的作用)

标识
g: 全局匹配
i: 不区分大小写匹配
m: 字符串换行了,就可以进行多行匹配

例题:

<body>
<div id="content">
你教育阿达阿萨德13ad
你好呀我的哥123
啊实打实大可垃圾啊123
</div>
<a href="javascript:void(0);" onclick="clickme();">点我</a>
<div id="show"></div>
<script>

var str = "aabc435ss34Aa";
 var reg = /\d+/g;结果:435,34---------->匹配一次或多次数字,如果没有加上g代表不是全局搜索只会弹出435
var reg = /a+/ig;结果:aaAa------------->匹配一次或多次字母a,如果没有加上g代表不是全局搜索只会弹出aa,加上ig表示
alert(str.match(reg));                           
不区分大小写进行全局搜索        


正则把每一行的结尾数字换成'#'号---->多行匹配
function clickme(){
var con = document.getElementById("content").innerHTML;
var reg = /\d+$/mg;--------->用mg标示匹配多行文本最后面的数字
alert(con.match(reg));
var newCon = con.replace(reg,"#");

var reg = /^\s+|\s+$/mg;-------->匹配除空字符串以外的文本
document.getElementById("show").innerHTML = newCon;
};
</script>
</body>


正则表达式之字符集([a-z] 、^、$等的理解)

 |代表或者
 $代表字符串后面文本

 [ ]字集----([a-d])------->表示a-d内的字母
 [^ab]  除了ab之外,其他的都可以匹配


正则表达式之子集(子集与match匹配的关系)

子集 ()
   match:
match匹配当没有全局g的时候,会把子集放入到匹配的数组当中,如果有全局g的时候,则不会

var str = "aabcd";
var reg = /(ab)+/g;------->当要匹配ab两个字符的时候只需要添加括号即可

var reg = /(ab|bc)d/g;

var reg = /(ab)(c)/;结果为abc,ab,c-------->当用(ab)(c)寻找时得出结果abc同时还会将用来搜寻的(ab)(c)在打印到
alert(str.match(reg));                               
结果里面


正则表达式之replace方法

replace的使用
    str.replace(reg,替换的内容);
    str.replace(/^\s+|\s+$/mg,"");

0 0