正则基本语法

正则表达式(Regular Expression)是用单字符串来匹配一系列复合条件字符串的模式,对于乔姆斯基3型语法。

数学定义:

串行AB表示集合 {αβ | α ∈ A ,β ∈ B }

并行A|B表示集合{α | α ∈ A or α ∈ B}

子集复合A* 表示集合{a,b} = {ε,a,b,aa,ab,bb...}

这种定义下的正则表达式能够被有限自动机解析。

重复

  • '*' : [0,∞]
  • '+' :[1,∞]
  • {a,b}:重复次数的范围从a到b次

转义

同其他编程概念,转义有两种作用:

  1. 将规定保留的特殊字符转换为正常字符,

    比如"."和"" 是正则中比较特殊的符号,使用""来实现转义,比如a.b表示"a.b",a*b表示"ab"
  2. 将正常字符转换成表示特殊含义的字符,

    比如"d"使用""之后就是"\d"表示数字

贪婪&懒惰模式

  1. a.*b 表示尽可能多的匹配以a开始,以b结束的字符串
  2. a.*?b 表示尽可能少的匹配以a开始,以b结束的字符串

Javascript场景

语法

	//1. string 操作的字符串
//2. regex 正则表达式
//3. replacement 需要替换的效果
string.replace(regex,replacement) //demo— /g表示全局替换
str = str.replace(/raw/g,"dealed");

问题

调用博客园API直接返回的内容不能只用react native中的html解析组件直接使用。

可以使用JS正则进行处理。

解决

需求:<a href="url"><img src = "url" border="0" onload="..."/></a> 替换成 <img src="url"/>

图片解析

//$1表示第一个参数(.*?)匹配到的部分
function ConvertPicture(raw){
let result = raw.replace(/<a href=(.*?) target="_blank"><img(.*?)<\/a>/g,'<img src=$1 alt="图片"/>');
return result;
}

超链接解析

同样,其他的转换类似。

需求:<a href="http://www.hao123.com" target="_blank">测试超链接</a> 转换成 [测试超链接]("url")

function ConvertHref(raw){
let result = raw.replace(/<a href=(.*?) target="_blank">(.*?)<\/a>/g,'["$2"]("$1")');
return result;
}

[技术博客] JS正则活学活用的更多相关文章

  1. 50家硅谷IT公司技术博客

    分享一下 50 家硅谷优秀 IT 公司技术博客,从中可以了解企业文化,技术特色和设计语言,如果直接列出来很单调,加上点评,算吐槽版吧. 知名大厂   1. Facebook https://www.f ...

  2. 技术人如何利用 github+Jekyll ,搭建一个独立免费的技术博客

    上次有人留言说,技术博客是程序员的标配,但据我所知绝大部分技术同学到现在仍然没有自己的技术博客.原因有很多,有的是懒的写,有的是怕写不好,还有的是一直想憋个大招,幻想做到完美再发出来,结果一直胎死腹中 ...

  3. [技术博客]使用CDN加快网站访问速度

    [技术博客]使用CDN加快网站访问速度 2s : most users are willing to wait 10s : the limit for keeping the user's atten ...

  4. 技术博客——微信小程序的架构与原理

    技术博客--微信小程序的架构与原理 在两个月的微信小程序开发过程中,我曾走了不少弯路,也曾被很多现在看来十分可笑的问题所困扰.这些弯路与困扰,基本上都是由于当时对小程序的架构理解不够充分,对小程序的原 ...

  5. 如何写出高质量的技术博客 这边文章出自http://www.jianshu.com/p/ae9ab21a5730 觉得不错直接拿过来了 好东西要大家分享嘛

        如何写出高质量的技术博客?答案是:如果你想,就一定能写出高质量的技术博客.看起来很唯心,但这就是事实.有足够愿力去做一件目标明确,有良好反馈系统的事情往往很简单.就是不停地训练,慢慢地,你自己 ...

  6. 技术博客(初用markdown)。

    技术博客 菜鸟教程在这个网站我学到许多有趣的东西,并且弥补了我之前的一些不足之处. 以下为我学习到的内容 输出不同的三位数 以下为代码和输出结果 *** #include<stdio.h> ...

  7. 技术博客(初用markdown)

    技术博客 菜鸟教程在这个网站我学到许多有趣的东西,并且弥补了我之前的一些不足之处. 以下为我学习到的内容. 1 如果想输出多个多位数的时候,可以尝试用多个if语句.如果需要输出3为数的时候,设置三个变 ...

  8. [转]有哪些值得关注的技术博客(Java篇)

    有哪些值得关注的技术博客(Java篇)   大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...

  9. 创建GitHub技术博客

    创建GitHub技术博客全攻略 githubio技术博客网站生成 说明: 首先,你需要注册一个 github 账号,最好取一个有意义的名字,比如姓名全拼,昵称全拼,如果被占用,可以加上有意义的数字.本 ...

随机推荐

  1. 【02】Python:数据类型和运算符

    写在前面的话 任何编程语言一开始都是从概念出发的,但各种编程语言之间的概念可能又会有差异,所以,老生常谈,我们还是需要从新过一遍 Python 的概念,当然,如果你已经是老司机了,完全可以一晃而过,不 ...

  2. C#多线程下如何保证线程安全?

    多线程编程相对于单线程会出现一个特有的问题,就是线程安全的问题.所谓的线程安全,就是如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是 ...

  3. SQL索引管理器 - 用于SQL Server和Azure上的索引维护的免费GUI工具

    我作为SQL Server DBA工作了8年多,管理和优化服务器的性能.在我的空闲时间,我想为宇宙和我的同事做一些有用的事情.这就是我们最终为SQL Server和Azure 提供免费索引维护工具的方 ...

  4. Console程序下监控EFCore生成的SQL语句!

    最近这两天在使用控制台程序学习EFCore,突然想看看生成的SQL语句,所以在网上找到一位大神的分享的方法! 准备工作: 1). MySqlEFCore NuGet:   Pomelo.EntityF ...

  5. 【JZOJ】2126. 最大约数和

    题目大意 选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大. 分析 把我们分解出来的因数进行合并,存在一个不知名的数组里,然后我们大可开始我们的迪屁!!(bag),我们可以 ...

  6. 浅谈MongoDB基础及架构

    1.简述MongDB是一个强大.灵活而可扩展的数据存储系统,其将强大的可扩展特性与关系库最有用的特性进行了整合,像:次级索引,范围查询和排序等特性.而MongDB也内建了类似MapReduce汇聚和地 ...

  7. CentOS7升级内核kernel5.0

    升级过程: 原系统:CentOS7.3 [root@my-e450 ~]# uname -r3.10.0-514.el7.x86_64 安装必需的软件包: # yum update# yum inst ...

  8. 小程序插件集成functional-page-navigator真机调试报错

    小程序集成插件 插件里面有functional-page-navigator标签 一."小程序开发版已过期,请重新扫码连接" 真机在调用插件的时候报错 "小程序开发版已过 ...

  9. Eclipse properties配置文件中文乱码设置

    1. eclipse中properties的默认编码为  ISO-8859-1, 输入汉字会被转换为unicode 2. 点击  Windows-->preferences  按下图找到更改编码 ...

  10. HFS ~ Http File Server

    HFS ~ Http File Server官网:https://www.rejetto.com/hfs/ 官方下载地址:https://www.rejetto.com/hfs/hfs.exe