前端正则解析url

本文介绍了如何在ES5中使用正则表达式和不同的方法(包括箭头函数和…arg)来解析URL参数,展示了查询URL参数的`queryURLparamsRegEs5`函数的实现过程。

在这里插入图片描述

const url = "http://www.baidu.com/m?f=8&ie=utf-8&rsv_bp=1&tn=monline_3_dg&wd=session"

const queryURLparamsRegEs5 = (url)=>{
  let obj = {};
  let reg = /([^?=&]+)=([^?=&]+)/g;
  url.replace(reg, (...args)=>{
    obj[args[1]] = args[2];
  })
  return obj
}

// let reg = /([^?=&]+)=([^?=&])+)/g;
// url.replace(reg, (...args)=>{
//   obj[args[1]] = args[2]
// })

//方法二: 正则 + arguments
//正则匹配规则 /([^?=&]+)=([^?=&]+)/g
//利用 replace 替换
//用伪数组进行键值对拼接
// const queryURLparamsRegEs5 = (url)=>{
//   let obj = {}
//   let reg = /([^?=&]+)=([^?=&]+)/g;
//   url.replace(reg,function(){
//     //在这个代码中,使用箭头函数作为 replace() 方法的回调函数会导致错误,是因为箭头函数没有自己的 arguments 对象。
//     //在箭头函数中,arguments 并不是指向函数的参数,而是指向包含箭头函数的父级函数的 arguments 对象。因此,在箭头函数中使用 arguments[1] 和 arguments[2] 会引发错误,因为父级函数中并没有这些参数。
//     console.log(arguments)
//     obj[arguments[1]] = arguments[2]
//   })
//   return obj
// }

//方法三: 正则 + ..arg
//就是用 ES6 的 …arg
//其实和 arguments 差不多 ,就是 arguments 是伪数组,…arg 是真数组
// const queryURLparamsRegEs5 = (url)=>{
//   let obj = {}
//   let reg = /([^?=&]+)=([^?=&]+)/g;
//   url.replace(reg,(...args)=>{
//     console.log(args)
//     obj[args[1]] = args[2]
//   })
//   return obj
// }

console.log(queryURLparamsRegEs5(url))
### 常用正则表达式示例和用法 正则表达式前端开发中扮演着重要角色,它们用于验证用户输入、解析字符串、提取数据等场景。以下是一些常见的正则表达式示例及其用法: #### 1. 验证电子邮件地址 电子邮件地址的格式通常遵循一定的规则,例如 `username@example.com`。可以使用以下正则表达式来验证电子邮件地址: ```javascript const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; ``` 此正则表达式确保地址包含用户名部分、@符号、域名部分以及至少两个字母的顶级域[^5]。 #### 2. 验证电话号码 电话号码可以根据不同的国家和地区有不同的格式。一个简单的美国电话号码验证正则表达式如下: ```javascript const phoneRegex = /^\d{3}-\d{3}-\d{4}$/; ``` 这个正则表达式匹配如 `123-456-7890` 这样的格式。 #### 3. 验证URL URL的格式也较为固定,可以使用以下正则表达式来验证: ```javascript const urlRegex = /^(https?:\/\/)?([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(\/[^\s]*)?$/; ``` 此正则表达式能够匹配以http或https开头的URL,包括可选的路径部分。 #### 4. 去除字符串两端的空白字符 可以使用正则表达式去除字符串两端的空白字符,尽管 `.trim()` 方法也可以实现相同的效果,但这里展示如何使用正则表达式: ```javascript let hello = " Hello, World! "; let wsRegex = /^\s+|\s+$/g; let result = hello.replace(wsRegex, ''); ``` 这段代码将字符串两端的所有空白字符替换为空字符串,从而达到去除空白的效果[^3]。 #### 5. 验证日期格式 (YYYY-MM-DD) 日期格式的验证对于确保数据一致性非常重要,下面的正则表达式可以用来验证日期格式为 `YYYY-MM-DD` 的字符串: ```javascript const dateRegex = /^\d{4}-\d{2}-\d{2}$/; ``` 此正则表达式确保输入的日期格式正确,其中年份由四位数字组成,月份和日期各由两位数字组成。 ### 性能考虑与最佳实践 在使用正则表达式时,需要注意性能问题。过于复杂的正则表达式可能导致匹配速度变慢,特别是在处理大量文本时。因此,建议尽可能简化正则表达式,并避免不必要的回溯[^4]。 ### 工具与资源 有许多在线工具可以帮助测试和调试正则表达式,例如 RegExr、Regex101 等。这些工具提供了直观的界面,使得学习和测试正则表达式变得更加简单。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值