前端技能练习2:获取URL参数

题目:

获取 url 中的参数

1. 指定参数名称,返回该参数的值 或者 空字符串
2. 不指定参数名称,返回全部的参数对象 或者 {}

3. 如果存在多个同名参数,则返回数组 

输入例子:

getUrlParam('http://www.nowcoder.com?key=1&key=2&key=3&test=4#hehe', 'key')

输出例子:

[1, 2, 3]

源码:

javascript笔试题(7) 简单的正则

做了几道简单的正则表达式的题目。虽然简单,但是也学到了很多。

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

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

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

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

2.判断连续重复字母

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

 //检查重复字母  
    function containsRepeatingLetter(str) {

        return /([a-zA-Z])\1/.test(str);
    }
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

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

   表达式在匹配时,表达式引擎会将小括号 "( )" 包含的表达式所匹配到的字符串记录下来。在获取匹配结果的时候,小括号包含的表达式所匹配到的字符串可以单独获取。这一点,在前面的举例中,已经多次展示了。在实际应用场合中,当用某种边界来查找,而所要获取的内容又不包含边界时,必须使用小括号来指定所要的范围。

    其实,"小括号包含的表达式所匹配到的字符串" 不仅是在匹配结束后才可以使用,在匹配过程中也可以使用。表达式后边的部分,可以引用前面 "括号内的子匹配已经匹配到的字符串"。引用方法是 "/" 加上一个数字。"/1" 引用第1对括号内匹配到的字符串,"/2" 引用第2对括号内匹配到的字符串……以此类推,如果一对括号内包含另一对括号,则外层的括号先排序号。换句话说,哪一对的左括号 "(" 在前,那这一对就先排序号。
   
   
  • 1
  • 2
  • 3

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

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

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

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

4.获取指定字符串

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

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

{n} 表达式重复n次

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

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

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

+表达式至少出现1次

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

String.prototype.match 返回结果:

这里写图片描述

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

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

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

首先:(\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**

function isUSD(str) {
   return /^\$\d{1,3}(,\d{3})*(\.\d{2})?$/.test(str);
}
   
   
  • 1
  • 2
  • 3

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 "";
        }
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值