js基础练习题 正则

1.判断字符串是否包含数字

1
2
3
4
function containsNumber(str) {
     var b = /\d/;
     return b.test(str);
 }

 

 

\d 一个数字 
\s 换行符,制表符,换页符等空白字符中的一个 
\w 字母或数字或下划线中的一个

\D 一个非数字 
\S 除换行符,制表符,换页符等空白字符中的一个 
\W 除字母或数字或下划线中的一个

2.判断连续重复字母

给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false

 
在正则表达式中,利用()进行分组,使用斜杠加数字表示引用,\1就是引用第一个分组,\2就是引用第二个分组。将[a-zA-Z]做为一个分组,然后引用,就可以判断是否有连续重复的字母。
 
1
2
3
function containsRepeatingLetter(str) {
     return /([a-zA-Z])\1/.test(str);
 }
 

()的作用 
(1). 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰 
(2). 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到

 

3.判断是否以元音字母结尾

1
2
3
function endsWithVowel(str) {
  return /[a,e,i,o,u]$/i.test(str);
 }
 

^ 匹配字符串开始位置 
$匹配字符串结束位置

g:代表可以进行全局匹配。 
i:代表不区分大小写匹配。 
m:代表可以进行多行匹配。

4.获取指定字符串

**给定字符串 str,检查其是否包含 3 个连续的数字           是连续3个数字,不是3个连续的数字
1、如果包含,返回最新出现的 3 个数字的字符串 
2、如果不包含,返回 false**



1
2
3
4
5
6
7
8
function captureThreeNumbers(str) {
  var reg;
  if(reg = str.match(/(\d{3})/)){
    return reg[0];
  }else{
    return false;
  }
}
 

{n} 表达式重复n次

{m,n} 表达式至少重复m次,最多重复n次

{m,} 表达式至少重复m次

? 匹配表达式0次或者1次

+表达式至少出现1次

* 表达式不出现或出现任意次

String.prototype.match 返回结果:

这里写图片描述

5.判断是否符合指定格式

**给定字符串 str,检查其是否符合如下格式 
1、XXX-XXX-XXXX 
2、其中 X 为 Number 类型**

 
本题需要注意格式,开头^和结尾$必须加上来限定字符串,3个数可表示为\d{3},4个数则为\d{4},{n}表示前面内容出现的次数。正则表达式可写作/^\d{3}-\d{3}-\d{4}$/,有相同部分\d{3}-,因此也可写作/^(\d{3}-){2}\d{4}$/

 
1
2
3
function matchesPattern(str) {
    return/^(\d{3}-){2}\d{4}$/.test(str);
}
 

首先:(\d{3}-) 重复了两次,所以是(\d{3}-){2}。即XXX-XXX-。 
然后:d{4}。即XXXX。 
最后,全局匹配,所以加上开始符^和结束符$。

6.判断是否符合 USD 格式

**给定字符串 str,检查其是否符合美元书写格式 
1、以 $ 开始 
2、整数部分,从个位起,满 3 个数字用 , 分隔 
3、如果为小数,则小数部分长度为 2 
4、正确的格式如:$1,023,032.03 或者 $2.03,错误的格式如:$3,432,12.12 或者 $34,344.3**

1
2
3

function isUSD(str) {
return /^\$(([1-9]\d{0,2}(,\d{3})*)|0)(\.\d{2})?$/.test(str);
}

 

1
要多考虑整数部分只为0的情况,比如$0.23,所以|0很有必要
 

7.获取 url 参数

**获取 url 中的参数 
1. 指定参数名称,返回该参数的值 或者 空字符串 
2. 不指定参数名称,返回全部的参数对象 或者 {} 
3. 如果存在多个同名参数,则返回数组**

//    获取 url 参数
    function getUrlParam(sUrl, sKey) {
        var arr={};
        sUrl.replace(/\??(\w+)=(\w+)&?/g,function(match,p1,p2){
            //console.log(match,p1,p2);
            if(!arr[p1]){
                arr[p1]=p2;
            }
            else {
                var p=arr[p1];
                arr[p1]=[].concat(p,p2);
            }

        })
        if(!sKey)return arr;
        else{
            for(var ele in arr){
                if(ele==sKey){return arr[ele];}
            }
            return "";
        }
    }
posted @ 2018-01-02 16:06  是两页啊  阅读(350)  评论(0编辑  收藏  举报