Js笔试题之正则表达式

一.复习字符串的传统操作

如何获取一个字符串中的数字字符,并按数组形式输出,如

dgfhfgh254bhku289fgdhdy675gfh

输出[254,289,675]

分析:循环用charAt()的方法获取到每一个子字符串,判断他是不是在0~9之间,是就把他扔到准备好的数组里

var str="dgfhfgh254bhku289fgdhdy675gfh";
findNum(str);
function findNum(){
    var arr=[];
    for(var i=0;i<str.length;i++){
        if(str.charAt(i)<=‘9‘&&str.charAt(i)>=‘0‘){
            arr.push(str.charAt(i));
            alert(arr);
        }
    }
}

但是这样会输出[2,5,4,2,8,9,6,7,5]和我们想要的结果有点偏差,于是我们需要一个新的空的字符串,每次碰到是数字走if,碰到字符走else,走else的时候把之前那些数字存放到新的空的字符串里,然后通过push添加到数组,然后清空字符串,一以便下次重新存放

var str="dgfhfgh254bhku289fgdhdy675";
findNum(str);
function findNum(){
    var arr=[];
    var result="";
    for(var i=0;i<str.length;i++){
        if(str.charAt(i)<=‘9‘&&str.charAt(i)>=‘0‘){
            result+=str.charAt(i);        //注意添加方向不要反了
        }
        else{
            if(result){
                arr.push(result);
                result="";
            }
        }
    }
    alert(arr)
}

还有个隐患:如果最后以数字结尾,则最后不会进入else,最后几位数字会读不到,因此for循环外面再添加一遍else里面的if循环

二.什么是正则,有什么用

正则:也叫做规则,让计算机能够读懂人类的规则

*前端哪些地方用到正则?

比如注册页面输入用户名,我们给定一套规则,判断他输入的对不对

*范围?

正则都是用来操作字符串的(即不要用他去操作对象什么的)

*怎么写?

正则也是一个系统对象,跟数组、json一样,也有个写法规则

简写   var re=//;                          //只写两斜杠,浏览器会认为是注释,所以尽量不要给他为空,注意两斜杠之间不要有引号

全称   var re=new RegExp();        //Reg是正则的简写,Exp是表达式的简写

大部分情况用简写,只有一种情况用全称

三.正则表达式的常用方法

1.test

正则去匹配字符串,如果匹配成功就返回真,匹配失败就返回假

写法:正则.test(字符串)

如:

var str=‘abcdef‘;

var re=/b/;       //bc一个整体也在字符串中,弹出true,但是写bd,弹出false,因为字符串中没有bd这么一个整体

alert(re.test(str));

弹出true

扩展:

检测一个字符串是不是全是数字

var str=‘8621t56461‘;

var re=//;

if(re.test(str)){

    alert("不全是数字");

}

else{

    alert("全是数字");

}

两斜杠之间要写什么呢?引入转义字符

\s(\S):空格(非空格)

\d(\D):数字(非数字)

\w(\W):字符(非字符)   字符包括字母、数字、下划线

2.search

3.match

4.replace

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。