正则表达式

正则表达式手册:https://www.jb51.net/tools/regexsc.htm

捕获匹配or非捕获匹配

() 捕获匹配。

(?:) 前置匹配(非捕获)。 

(?=) 后置匹配(非捕获)。

(?!) 后置非匹配(非捕获)。


容易忽略的小细节点

\B 匹配非单词边界。“er\B"能匹配"verb"中的"er",但不能匹配"never"中的"er"。

\b 匹配一个单词边界,也就是指单词和空格间的位置。例如,“er\b"可以匹配"never"中的"er",但不能匹配"verb"中的"er"。

\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。


正则表达式以及字符串的方法


两个高能的方法:replace、exec。

replace方法: replace([string|exec],[string|function])

使用字符串的场景:替换字符串中固定模式的字符串。

使用函数场景:替换字符串中固定模式的字符串,并且需要做转换。

exec方法:返回正则匹配后结果。


案例

/* 案例1:反转url中的名称和值 */
const rTest = /([\?&])([0-9A-Za-z]+)=([0-9A-Za-z]+)/ig;
const url1 = "http://www.baidu.com#login?name=hao&age=23&sex=male";
// 使用$+number的方式获取匹配组
const resultUrl1 = url1.replace(rTest, '$1$3=$2');


/* 案例2:解析url中query */
let info,urlMap = {};
while((info = rTest.exec(url1)) != null) {
    const testInfo = info[0];
    const key = info[2];
    const value = info[3];
  // 使用RegExp中的变量
    console.log("regexp data:", info, RegExp.$1, RegExp.$2, RegExp.$3);
    urlMap[key] = value;
}


/* 案例3:温度转化 */
function f2c(x)
{
  function convert(str, p1, offset, s)
  {
  	console.log("convert:",str, p1, offset, s, RegExp.$1);
    return ((p1-32) * 5/9) + "C";
  }
  var s = String(x);
  var test = /(\d+(?:\.\d*)?)F\b/g;
  // 使用string.prototype.replace方法
  return s.replace(test, convert);
}

资源:

在线测试工具: http://tool.oschina.net/regex/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值