您现在的位置: 万盛学电脑网 >> 程序编程 >> 脚本专题 >> javascript >> 正文

javascript正则表达式基础知识入门

作者:佚名    责任编辑:admin    更新时间:2022-06-22

   很长时间没看正则表达式了,碰巧今天用到,温故知新了一把,这里记录下来,分享给大家,都是些基础的知识,重点给大家讲解的是正则表达式中4种常用的方法,50% 的举一反三练习中的原创。

  正则表达式的好处到底在哪里呢,下面我们先进行个了解:

  我们用js中处理字符串的方法,写出取出字符串中数字的函数:

  ?

1 2 3 4 5 6 7 8 9 10 11 var str='dgh6a567sdo23ujaloo932'; function getNumber(obj){ var arr=[]; for (var i = 0; i < obj.length; i++) { if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){ arr.push(obj.charAt(i)); } } return arr; }; console.log(getNumber(str)); //["6", "5", "6", "7", "2", "3", "9", "3", "2"]

  上面的方法我们取出了字符串中的数字,但是我们不满意,我们需要的是['6','567','23','932']的形式,对函数进行改造:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 function getNumber(obj){ var arr=[]; var temp=''; for (var i = 0; i < obj.length; i++) { if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){ temp+=obj.charAt(i);//现将相邻的数字连接起来 } else{ //每当连接的数字断开时,就在这执行 if (temp) { arr.push(temp); temp=''; } }; } if (temp) { //这里的作用是为了显示最后数字的,原因不想解释 arr.push(temp); temp=''; } return arr; };

  那我们用正则表达式的方式来解决这个函数实现的功能:

  ?

1 2 3 4 5 6 function getNumber2(obj){ var arr=[]; var re=/d+/g; arr.push(obj.match(re)); return arr; };

  完整的看看程序的运行结果吧:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 <!DOCTYPE> <html> <head> <meta charset='utf-8'> <title></title> </head> <script type="text/javascript"> window.onload=function(){ var str='dgh6a567sdo23ujaloo932'; /*function getNumber(obj){ var arr=[]; for (var i = 0; i < obj.length; i++) { if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){ arr.push(obj.charAt(i)); } } return arr; };*/ function getNumber(obj){ var arr=[]; var temp=''; for (var i = 0; i < obj.length; i++) { if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){ temp+=obj.charAt(i);//现将相邻的数字连接起来 } else{ //每当连接的数字断开时,就在这执行 if (temp) { arr.push(temp); temp=''; } }; } if (temp) { //这里的作用是为了显示最后数字的,原因不想解释 arr.push(temp); temp=''; } return arr; }; function getNumber2(obj){ var arr=[]; var re=/d+/g; arr.push(obj.match(re)); return arr; }; console.log(getNumber(str)); console.log(getNumber2(str)); }; </script> <body> </body> </html>

  从上面的例子我们可以看出来,正则表达式的方法有着同样的效果,但是代码更加简短,更加高效,这就是正则的好处啊

  正则是为了更高效的处理字符串而产生的,和字符串处理方法一样,只是更加高效、简洁(正则只可以处理字符串)

  下面我们来系统的学习一下,正则的几个常用的方法:

  在这之前说一下正则的写法,正则和其他对象array()、object()、Date()等都一样,都有初始化的方式

  var re=/这里面要写匹配的东西,不写的话就是注视符号了/; //这样的就是正则对象的简单创建,后面文章我都是直接用它来代替的

  var re=new RegExp(); //这样的创建方式也可以的,大家懂得,只是和简写不同的是参数传递有点不一样

  (1)test

  含义:正则去匹配字符串,当匹配成功返回true,反之,返回false;

  语法:re.test(字符串);

  先说点转义字符吧 :

  /s空格 /S非空格 /d数字 /D非数字 /w字符(字母、数字、下划线) /W非字符

  举个例子:判断一个字符串是否都是数字

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <!DOCTYPE> <html> <head> <meta charset='utf-8'> <title></title> </head> <script type="text/javascript"> window.onload=function(){ var str='dgh6a567sdo23ujaloo932'; var str2='123456'; function allNumber(obj){ var re=/D/;//定义正则对象匹配非数字,只要有不是数字的就是匹配结束返回结果 if (re.test(obj)) { alert('不全是数字'); } else{ alert('全是数字'); }; }; allNumber(str); allNumber(str2);   }; </script> <body> </body> </html>

  (2)search

  含义:正则去匹配字符串,当匹配成功返回匹配成功的位置,反之,返回-1;和字符串处理方法中的indexof()功能一样

  语法:字符串.search(re);

  [