正则

作者: 易路先登 | 来源:发表于2021-09-24 16:59 被阅读0次

是什么
模式
如何生成正则表达式
1、字面量

let reg = /a/g

2、new关键字

new RegExp('模式','修饰符')

正则实例api
1、test

let str = 'a1901'
let reg = /^a/
reg.test(str)

2、exec

var reg = /a/g
var str = 'a1901a'
reg.exec(str)//['a',0]
reg.exec(str)//['a',5]
reg.exec(str)//null

字符串的正则方法
1、match

var reg = /a/g
var str = 'a1901a'
str.match(reg)//['a','a']

2、replace

var reg = /a/g
var str = 'a1901a'
str.replace(/a/g,(arg)=>{if(i++===0){return '优秀'}else{return 'A'};})

描述字符

元字符 描述
. 查找单个字符,除了换行和行结束符
\w 查找单词字符
\W 查找非单词字符
\d 查找数字
\D 查找非数字字符
\s 查找空白字符
\S 查找非空白字符
\b 匹配单词边界
\B 匹配非单词边界
\0 查找 NUL字符
\n 查找换行符
\f 查找换页符
\r 查找回车符
\t 查找制表符
\v 查找垂直制表符
\xxx 查找以八进制数 xxxx 规定的字符
\xdd 查找以十六进制数 dd 规定的字符
\uxxxx 查找以十六进制 xxxx规定的 Unicode 字符
* 0~+∞
0或1
+ 1~+∞
{start,end} start~end
转义

贪婪模式:正则默认尽可能多的去匹配符合模式的字符
非贪婪模式(模式?),正则尽可能少的去匹配符合模式的字符

分组:每个分组都有一个x和其对应,在正则匹配后可以通过x直接获取

global.name = 'zhangsan';
global.age = 18
var str = '{{name}}:{{age}}'
str = str.replace(/\{\{(.*?)\}\}/g,(arg,$1)=>{
    console.log(arg,$1)
    return global[$1]
})
console.log(str)

几种特殊的匹配

特殊的匹配方式
案例
const str = `<h1 id="欢迎使用-wipi-markdown-编辑器">欢迎使用 Wipi Markdown 编辑器</h3>
<blockquote>
  <ul>
  <li>整理知识,学习笔记</li>
  <li>发布日记,杂文,所见所想</li>
  <li>撰写发布技术文稿(代码支持)</li>
  </ul>
</blockquote>
<h2 id="什么是-markdown">什么是 Markdown</h2>
<p>Markdown 是一种方便记忆、书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档:譬如您正在阅读的这份文档。它使用简单的符号标记不同的标题,分割不同的段落,<strong>粗体</strong> 或者 <em>斜体</em> 某些文字。</p>
<h3 id="1-待办事宜-todo-列表">1. 待办事宜 Todo 列表</h3>
<ul>
<li class="task-list-item" style="list-style-type: none;"><input type="checkbox" disabled style="margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;"> 支持以 PDF 格式导出文稿</li>
<li class="task-list-item" style="list-style-type: none;"><input type="checkbox" disabled style="margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;" checked> 新增 Todo 列表功能</li>
</ul>
<h3 id="2-高亮一段代码code">2. 高亮一段代码[^code]</h3>
<pre><code class="python language-python">@requires_authorization
class SomeClass:
    pass

if __name__ == '__main__':
    # A comment
    print 'hello world'
</code></pre>
<h3 id="3-绘制表格">3. 绘制表格</h3>
<table>
<thead>
<tr>
<th>项目</th>
<th style="text-align:right;">价格</th>
<th style="text-align:center;">数量</th>
</tr>
</thead>
<tbody>
<tr>
<td>计算机</td>
<td style="text-align:right;">1600</td>
<td style="text-align:center;">5</td>
</tr>
<tr>
<td>手机</td>
<td style="text-align:right;">12</td>
<td style="text-align:center;">12</td>
</tr>
<tr>
<td>管线</td>
<td style="text-align:right;">10</td>
<td style="text-align:center;">234</td>
</tr>
</tbody>
</table>
<h3 id="4-嵌入网址">4. 嵌入网址</h3>
<iframe src="//player.bilibili.com/player.html?aid=77737877&bvid=BV1xJ411z7eS&cid=132993821&page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<pre><code class="HTML language-HTML">&lt;iframe src="//player.bilibili.com/player.html?aid=77737877&amp;bvid=BV1xJ411z7eS&amp;cid=132993821&amp;page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"&gt; &lt;/iframe&gt;
</code></pre>`;


var reg  = /\<h([1-6])(.*?)\<\/h\1\>/g
console.log(str.match(reg))

模式内引用分组/\<h([1-6])(.*?)\<\/h\1\>/g 重点\number

相关文章

  • java正则使用

    正则切割 正则捕获 正则完全匹配

  • regexp 正则包

    正则对象 正则使用都是通过创建对应的正则对象,调用对象方法所实现。 新建正则对象 正则对象属性方法 正则方法 一般...

  • 个人书画作品之四

    写楷心得 字正则心正,心正则人正,人正则德正,德正则身正, 身正则形正,形正则意正, 意正则气正,一气化三清。 ...

  • 第七天正则表达式

    正则表达式的理念: 正则的使用方法: 正则里string两个方法: 使用正则找字母的几种写法: 正则的转义: 正则...

  • 心正笔正

    心正则意正!心正则身正! 心正则言正!心正则行正! 心正则笔正!心正则字正! 心正则并勤!勤尽则字成! 心清则目明...

  • git一次删除多个文件

    正则 非正则

  • day17-正则表达式

    正则表达式符号含义 通配符与正则区别? 正则表达式中注意事项 正则表达式分类: 基本正则(BRE) ※ 扩展正则表...

  • Js正则匹配常用案例

    1 用户名正则 2 密码强度正则 3 整数正则 4 数字正则 5 Email正则 6 手机号码正则 7 身份证号正...

  • 前端表单验证常用的15个JS正则表达式

    1.用户名正则 2 密码强度正则 3 整数正则 4 数字正则 5 Email正则 6 手机号码正则 7 身份证号正...

  • 2019-06-15 JS

    email正则, url正则

网友评论

      本文标题:正则

      本文链接:https://www.haomeiwen.com/subject/lpuzgltx.html