所谓正则表达式,简单来说就是一种规则,一种计算机能读懂的规则。js中的正则表达式语法是Perl5(一种很早的编程语言)的正则语法的子集。本文将在基础知识的基础上添加示例帮助快速理解正则表达式。

学习正则要对字符串以及字符串的函数非常了解,在此不多赘述,了解字符串可见另一篇文章,链接:http://www.cnblogs.com/pomelott/p/6567618.html。

1.正则表达式的创建方法

1.1 var reg=new RegExp(表达式,修饰符)

1.2 var reg=/表达式/修饰符

2.正则表达式的字符类(可表示一类字符)

[...]      方括号内的任意一个字符(记住是一个)

[^...]     不是方括号内的任意字符

[a|b]       a或b,只能是一个

\w                   任何ASCII字符,等价于[0-9a-zA-Z_]

\w                   任何不是ASCII字符组成的单词,等价于[^0-9a-zA-Z]

\d                   任何数字,等价于[0-9]

\D                   任何非ASCII编码数字,等价于[^0-9]

\s                    任何Unicode空白符

\S                   任何非Unicode空白符

.                      换行符和和其他Unicode行终止符之外的任意字符

[\b]                 退格直接量

    var str="aSsdAeffa";
var reg=/a/ig; //i为ignore(忽略大小写) g为global(全局匹配) ig顺序可调换
console.log(typeof reg); //Object 正则表达式是一个对象,而不是字符串。new RegExp()在内部也同样利用第一个参数的字符串创建一个正则对象
console.log(reg.test(str)); //true 注意这是正则自带的方法,而不是字符串
console.log(str.match(reg)); //["a", "A", "a"] 全局不区分大小写 ,返回数组
    var str2="afds15d dw";
var reg2=/\d/g;
var reg3=/\w\d/;
console.log(str2.search(reg2)); //
console.log(str2.search(reg3)); //3 寻早一个字符在前数字在后的组合

3. 修饰符

i             ignore忽略大小写进行匹配

g           global进行全局匹配

m          多行匹配,^匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束

    var str3="AsadwAPoamelOtT";
var reg4=/a/;
var reg5=/a/i;
var reg6=/a/g;
var reg7=/a/gi;
console.log(str3.match(reg4)); //["a", index: 2, input: "AsadwAPoamelOtT"]
console.log(str3.match(reg5)); //["A", index: 0, input: "AsadwAPoamelOtT"]
console.log(str3.match(reg6)); //["a", "a"]
console.log(str3.match(reg7)); //["A", "a", "A", "a"]

4. 量词,修饰前一个字符

{n,m}         n-m此

{n,}            大于等于n次

{,m}           小于等于m次

?                  0次或一次,等价于{0,1}

+                 一次或多次,等价于{1,}

*                 匹配前一项0次或多次,等价于{0,}

      var str4="saf_344 fa4f66gp 9a";
var reg8=/\d+/g;
var reg9=/\d\d/g;
var reg10=/\d{2,}/g;
var reg11=/\d/g;
console.log(str4.match(reg8)); //["344", "4", "66", "9"]
console.log(str4.match(reg9)); //["34", "66"]
console.log(str4.match(reg10)); //["344", "66"]
console.log(str4.match(reg11)); //["3", "4", "4", "4", "6", "6", "9"]

5. 锚字符

^            匹配一行的开头

$            匹配一行的结尾

\b          单词边界,意为\w与\w之间的位置,或者位于字符\w与字符串的开头挥着结尾之间的位置

\B          匹配非单词边界

平时不带^和$的正则表达式匹配的是包含符合正则规则的,而加了^和$的表达式匹配的是完全符合正则规则的。

例:邮箱验证

        var str5="pomelott@163.com";
var str6="pomelo163.com";
var str7="pomelo@163com";
var reg12=/^\w+@\w+\.[a-z]{2,4}$/;
console.log(reg12.test(str5)); //true
console.log(reg12.test(str6)); //false
console.log(reg12.test(str7)); //false

6.选择

6.1   /a|b/   匹配a部分或者b部分

          var reg13=/a|b/g;
var str8="adfsbrsar";
console.log(str8.match(reg13)); //["a", "b", "a"]

6.2  /..[a|b]../    匹配a或者b

            var reg14=/\da|b\d/g;
var reg15=/\d[a|b]\d/g;
var str9="4fd4a6e5b55";
console.log(str9.match(reg14)); //["4a", "b5"]
console.log(str9.match(reg15)); //["4a6", "5b5"]

例:去掉行首或者行尾的空格

            var reg16=/^\s+|\s+$/g;
var str10=" pomelo tt ";
console.log(str10.replace(reg16,"")); //pomelo tt

6.3 分组()  将括号内的当成整体来操作,可以用*,+,?,|进行整体修饰

            var str11="java";
var str12="javascript";
var reg17=/java(script)?/; //script可以有也可以没有
console.log(reg17.test(str11));
console.log(reg17.test(str12));
            var reg18=/(ab|cd)+|ef/;    //用于匹配存在 一个或多个(ab或cd)或一个ef 的字符串

最后再附上两个例子:

例1.敏感词过滤:我们在游戏中经常看到的***

    var reg19=/fuck|草|日/g;
var str13="fuck!真实日了狗了!";
console.log(str13.replace(reg19,"*")); //*!真实*了狗了!

例2. 检测中文:

    var reg20=/[\u4e00-\u9fa5]/g;    //u为Unicode编码  4e00-9fa5 为数字编码范围
var str14="pomelo忒忒,wo是qianduan程序员";
console.log(str14.match(reg20)); //["忒", "忒", "是", "程", "序", "员"]

喜欢请点击右下角推荐,如有疑问可以留言。转载请标明出处。

js正则表达式详解及示例讲解的更多相关文章

  1. JS 正则表达式详解

    在此提供相关的链接,请访问: http://www.cnblogs.com/dolphinX/p/3486214.html http://www.cnblogs.com/dolphinX/p/3486 ...

  2. js正则表达式详解

    一.正则的两种写法: var re = /a/; //一般情况下都用简写的方式 性能好 var re = new RegExp('a'); //需要传入参数的时候用 二.转义字符: \n 换行 \r ...

  3. JS 正则表达式^$详解,脱字符^与美元符$同时写表示什么意思?

     壹 ❀ 引 对于初学正则的同学来说,^$这两个看似简单的字符却在使用中总让匹配结果超出我们的预期,^什么时候表示行首什么时候表示反义?^ $两个一起写表示什么含义?今天我们就来详细聊聊这两个字符. ...

  4. Django url配置 正则表达式详解 分组命名匹配 命名URL 别名 和URL反向解析 命名空间模式

    Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11版本 ...

  5. (转)linux正则表达式详解

    linux正则表达式详解 http://blog.csdn.net/wuliowen/article/details/64131815 1:什么是正则表达式: 简单的说,正则表达式就是处理字符串的方法 ...

  6. Linux文本处理三剑客之grep及正则表达式详解

    Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...

  7. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  8. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

  9. Java 正则表达式详解_正则表达式

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

随机推荐

  1. 《JavaScript DOM 编程艺术 》 笔记

    一:这本书由几个案列带入知识点,通俗易懂.最大的收获莫过于作者多次提到的逐渐增强和平稳退化. "渐进增强"指的是给所用用户同等的基本使用体验,再根据用户终端的级别给予更高级的用户更 ...

  2. Leaflet+heatmap实现离线地图加载和热力图应用

    本人博客主页:http://www.cnblogs.com/webbest/ 2017年春节已经过完,新一年的奋斗也刚刚开始.今年要经历的挑战也是大大的...不扯了. 年底前软件项目相对较多,恰巧在年 ...

  3. 微端游戏启动器launcher的制作(序篇)

    公司要做一个游戏接入腾讯QQ游戏大厅,腾讯要求制作一个launcher,公司之前并没有接入过腾讯,所以大家其实都不懂,而我又是新人,所以刚拿到这个任务的时候整个人就是一个大写的懵逼.在网上查找了不少的 ...

  4. Node - EJS模板应用(node+express+ejs)

    准备工作: 工具:Webstorm 1. 新建一个文件夹为blogs(随意). 一个js文件app.js. 一个文件夹views,文件夹内一个index.ejs文件,文件夹asstes内style.c ...

  5. 读书笔记 effctive c++ Item 20 优先使用按const-引用传递(by-reference-to-const)而不是按值传递(by value)

    1. 按值传递参数会有效率问题 默认情况下,C++向函数传入或者从函数传出对象都是按值传递(pass by value)(从C继承过来的典型特性).除非你指定其他方式,函数参数会用实际参数值的拷贝进行 ...

  6. 不用搭环境的10分钟AngularJS指令简易入门01(含例子)

    不用搭环境的10分钟AngularJS指令简易入门01(含例子) `#不用搭环境系列AngularJS教程01,前端新手也可以轻松入坑~阅读本文大概需要10分钟~` AngularJS的指令是一大特色 ...

  7. USB重定向

    第一期中,我们一起简要的看了下传统PC和桌面云下USB重定向和USB设备重定向方式的差异,了解了桌面云下外设兼容性问题来源的根源-USB设备本身驱动不规范/不支持, 或者虚拟机驱动实现上与USB设备对 ...

  8. AR入门系列-03-在unity中将调试好的Vuforia项目导出为APK

    先设置build settings 选中Android后点击Player Settings Product Name设置安装后的Android程序的名字 Bundle Identifier 设置apk ...

  9. 编程那些事儿:如何快速地"借用"CSS

    做前端开发有时候会碰到任务紧急,需要马上写好静态页的问题.比如,设计师给你扔了一个设计稿,要你在下班之前搞定.这时候你如热锅上的蚂蚁,如果自己写css的话,时间紧张,于是上网找了一下相关模板页面,找到 ...

  10. 微信小程序入门之构建一个简单TODOS应用

    最近开始了解微信小程序,虽然小程序已经出了很久了,刚出的那段时间很火,看到很多关于小程序的技术文章,不过现在似乎没那么火了,anyway,我们还是可以学习下的. 一.了解微信小程序 1.理念:小程序开 ...