正则表达式之初入江湖

为何要学正则表达式

许多人对正则表达式的认知只是在举行表单考证的时刻在网上搜一段正则表达式举行copy,现实工作上彷佛很难碰到大段的正则表达式
我第一次看到大批的正则运用是在jQuery源码中,当时看的头疼只好草草的看下也许思绪不了了之,然则到本日我依旧不认为这类做法是毛病的,jQuery初期为了兼容性代码许多处所太脏,不如在网上搜搜源码架构。拿jQuery举例子只想申明你总会在一些阴晦的角落碰到正则表达式,为了到时刻不至于一头雾水,我们最好简朴的相识一下正则表达式的运用。
看完本文你不会称为正则专家,现实你也不须要通晓正则,能看懂他人写的正则和能写一些简朴的正则即可
之前在网上搜过一些文章,觉得写的都不太好把我的耐心都磨没了所以我决议写一篇相符“人”进修直觉的文章

建立正则表达式

在JavaScript中与大多数其他对象范例一样,有两种要领能够建立正则表达式比方我们要婚配一个”test”字符串
  • 经由过程正则表达式字面量
var pattern = /test/;
  • 经由过程组织RegExp实例
var pattern = new RegExp("test");
前者直接在//中写婚配划定规矩就Ok了,后者须要挪用RegExt组织要领,并把婚配划定规矩用””包起来,很明显第一种越发清楚,横竖我每次都记不住”RegExp”,每次用都要现查,所以我们接下来用第一种就好了(RegExp有它的优点然则如今不须要知道)
如今你肯定想知道/test/表达的是什么意义?
这类一个接一个的字符,隐式的表达了”followed by”如许一个操纵也就是一个挨着一个
  1. ‘t’背面随着’e’
  2. ‘e’背面随着’s’
  3. ‘s’背面随着’t’
正则表达式的威力仅此而已吗?假如只是如许就太让人扫兴了,由于完全能够运用indexOf举行推断
接下来我们分外进修三个英文字母,在正则中他们有各自的寄义
  • i 让正则表达式不分大小写 /test/i 示意不仅能够婚配’test’还能够婚配’TeSt’
  • g 全局婚配 默许状况正则只婚配第一次涌现的效果比方’testkdgyitest’ 找到第一个’test’就算完成工作了,而g能够找到一切相符前提的婚配值
  • m 许可婚配多个行比方婚配textarea中的值
请记着这些字母跟在//背面 如/test/i
接下来让我们做个小演习,有以下字符串,将字符串中的test(不辨别大小学)替代成“啊哈正则” 提醒:js替代字符串经常使用replace要领而且replace第一个参数吸收正则表达式
var str =  "sjufhsufhTesT";//将test(不管大小写)替代成“啊哈正则”
答案:
var str =  "sjufhsufhTesT";
var pattern = /test/i;
var newStr = str.replace(pattern, "啊哈正则");
前面说了默许状况正则只婚配第一次涌现的效果,我们来测试一下
var str =  "testsjufhsufhTesT";
var pattern = /test/i;
var newStr = str.replace(pattern, "啊哈正则");// 效果以下"啊哈正则sjufhsufhTesT"
我们加上g尝尝
var str =  "testsjufhsufhTesT";
var pattern = /test/ig;
var newStr = str.replace(pattern, "啊哈正则");// 效果以下"啊哈正则sjufhsufh啊哈正则"

婚配一类字符

有时刻我们想更天真一些,不想只婚配某个特定的字符串,而是想婚配鸠合中的某一个字符,比方我们只想婚配“a” “b” “c”中任何一个字符 我们能够这么写[abc]
[]中能够指定一个鸠合比方[abc],那末假如想指定一个从a到z的鸠合,岂非我们把26个英文字母一个一个写一遍吗?固然不须要!我们能够在[]中指定局限[a-z]
没懂?看下面的例子就好了
var str1 = "ak恩ebc";
var pattern1 = /[abc]/;
var newStr1 = str1.replace(pattern1,"雅儿");
console.log(newStr1);//雅儿k恩ebc
我们看到我们想要abc当中的任何一个字符,纵然中心隔着其他字符也没紧要,然则默许状况是假如找到了a就住手往下继承婚配b和c了,假如没婚配到a,那末将婚配b,以此类推

假如想悉数婚配请加上在//后加上"g"
如今有个新需求,婚配除abc以外的字符,我们怎么办呢?能够在鸠合中插进去一个”^” 1
“^” 示意除…以外
var str2 = "ak恩ebc";
var pattern2 = /[^abc]/g;
var newStr2 = str2.replace(pattern2,"雅儿")
console.log(newStr2);//a雅儿雅儿雅儿bc
列位看客看到这里想必也累了,余下的内容今后再说。先把此次的内容温习一下
  • 正则表达式的两种建立体式格局
  • i g m 三个字母代表的特别寄义 i示意不辨别大小写 g示意全局婚配 m示意许可婚配多个行 (别忘了写在//后 如/test/i)
  • 能够用[]婚配鸠合中的某个字符串
  • 能够^完成反选,示意除…以外
末了引荐一个正则可视化东西,能够在上面演习正则,经由过程可视化的体式格局更轻松的明白

https://regex101.com/

  1. abc
    原文作者:越过山丘
    原文地址: https://segmentfault.com/a/1190000013926274
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞