这道面试题明显是要用到正则表达式来解决的,由于太久没有写正则表达式了,一时之间竟然写不出来,所以记录一下笔记,下面直接上代码:

 function parseUrl(str) {
// 判断是否传入参数
if (str) {
var obj = {};
var queryArr = [];
// 正则表达式规则
var re = /^(http\w?):\/\/([0-9a-zA-Z\.]+)([a-zA-Z0-9\/]+)\?([a-zA-Z0-9\=\&]+)#([0-9a-zA-Z\.]+)/;
// 利用正则表达式将字符串分组
var reArr = re.exec(str);
if (reArr) {
obj.peotocol = reArr[1];
obj.host = reArr[2];
obj.path = reArr[3];
queryArr = reArr[4].split(/[\&\=]+/);
obj.query = {};
for (var i = 0; i < queryArr.length; i += 2) {
obj.query[queryArr[i]] = queryArr[i + 1];
}
obj.hash = reArr[5]
return obj;
} else {
return null;
}
} else {
return null;
}
}

完。

一道关于js正则表达式的面试题的更多相关文章

  1. js正则表达式常见面试题

    1 . 给一个连字符串例如:get-element-by-id转化成驼峰形式. var str = "get-element-by-id"; var reg = /-\w/g; / ...

  2. 一道js的前端面试题,主要弄清楚逗号表达式的作用

    群里看到的一道前端JS面试题.我以为我会,其实我错了.找了很多资料,写下来. var i,j,k; for( i = 0 , j = 0; i < 10 , j < 6; i++ , j+ ...

  3. (转)精通 JS正则表达式

    精通 JS正则表达式 (精通?标题党 ) 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式.这称为数据有效性验证  ...

  4. JS 正则表达式否定匹配(正向前瞻)

    引言:JS 正则表达式是 JS 学习过程中的一大难点,繁杂的匹配模式足以让人头大,不过其复杂性和其学习难度也赋予了它强大的功能.文章从 JS 正则表达式的正向前瞻说起,实现否定匹配的案例.本文适合有一 ...

  5. JS正则表达式常用总结

    正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...

  6. 使用外部web组件-----easyUI、jQueryUI、Bootstrap、js正则表达式

    1.使用外部web组件,以Bootstrap为例 <head> <link rel='stylesheet'  href='bootstrap-3.3.0-dist/dist/css ...

  7. js正则表达式图形化工具-rline

    github地址:https://github.com/finance-sh/rline 在线demo: http://lihuazhai.com/demo/test.html 这是一个js正则表达式 ...

  8. Python之路-(js正则表达式、前端页面的模板套用、Django基础)

    js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  9. JS正则表达式大全

    转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ...

随机推荐

  1. 常量、变量、数据类型 搞错N+1次 累死

    public class hello { /** * * * * * @param args */ public static void main(String[] args) { String _$ ...

  2. 【Python】回文palindrome——利用字符串反转

    回文 palindrome Python 字符串反转string[::-1] Slice notation "[a : b : c]" means "count in i ...

  3. idea引入依赖包报错

    今天在更新项目的时候,maven依赖的一个服务一直报错.查了后发现原来是因为缺少依赖包.但是依赖包明明在我本地啊. 又重新下载,依然如故... 搞了半天,发现自己的依赖包类状态都是不可用的.如下图所示 ...

  4. JS如何将变量作为一个对象的Key

    var lastWord = 'last word'; var a = { 'first word': 'hello', [lastWord]: 'world' }; a['first word'] ...

  5. January 17 2017 Week 3 Tuesday

    You can't shake hands with a clenched fist. 紧握拳头你就无法与他人握手. If you want to shake hands with others, j ...

  6. NET(C#):使用HttpWebRequest头中的Range下载文件片段

    转自:http://www.mgenware.com/blog/?p=220 HTTP请求包头信息中有一个Range属性可以指定索取部分HTTP请求的文件.在.NET中则通过HttpWebReques ...

  7. ListView实现下拉刷新(二)隐藏头布局

    一.问题分析 在上一篇中,我们将头布局加到了ListView上.但是没有隐藏他.你可能会想,隐藏还不简单,直接给它设置为GONE属性不就可以了吗,在需要的时候再设定为可见.没错,这正是ListView ...

  8. Educational Codeforces Round 55 (Rated for Div. 2) B. Vova and Trophies 【贪心 】

    传送门:http://codeforces.com/contest/1082/problem/B B. Vova and Trophies time limit per test 2 seconds ...

  9. Yii2 配置发送邮件

    'components' => [ 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@com ...

  10. 华为路由设备SSH配置

    一.环境 路由 IP:192.168.56.2 本地云 IP:192.168.56.1 二.路由器配置 [Huawei]aaa 添加用户[Huawei-aaa]local-user test pass ...