JS正则:java RegExp对象,它是对字符串执行模式匹配的强大工具。运用最多的就是在输入处验证输入的字符串是否合法,指定用户输入字符串的格式。

定义方法:

  1:直接量语法:var re=/pattern/attributes

  2:创建RegExp对象法:var re=new RegExp("pattern","attributes")

    pattern:这里可以是字符串,也可以是正则表达式对象。            //注:当使用创建RegExp对象法时,如果pattern是正则表达式,则不用写第二个参数。

    attributes:匹配方式。它只有三个参数:i,g,m。  i:表示不区分大小写匹配。g:查找所有匹配,而非查找到第一个就停止。m:多行匹配。

  例:var re=/a/ig   var re=new RegExp("a","ig")        //表示匹配所有的a和A。这两种写法是一样的。

正则表达式的定义规则(这里主要讲如何书写pattern参数):

  1:方括号[]:表示匹配括号中的所有字符

    var re=/[a-z]/         //表示满足小写a-z的字符串        如:a34vas3

    var re1=/[abc][def0-9]/    //表示两个满足条件并且要相邻的字符串   如:5a8zcf

  2:花括号{}:表示匹配多少个字符,通常与方括号[]一起使用

    var re =/[a-z]{3}/       //表示要有连续的三个小写字母的字符串     如:t34bgp5jip8

    /**    var re1=/[a]{1-3}/      //表示满足连续三个a的字符串       如:rgb89aaacd    这种写法是错误的,并没有这种1-3的写法**/

    var re2=/[a]{1,3}/      //逗号,表示或者的意思  这里灰色之前是有误解,{1,3}表示区间,表示大于等于1,小于等于3个都是可以的    如:rabcaaadaa   

  3:小括号():表示提取字符串,匹配到的字符串可以通过$0-9可获取匹配的字符串,这个会在后面的例子中介绍到。

    三种括号的更多使用可以参照:https://www.cnblogs.com/signheart/p/20a396bdbdeb9aa446663395eea4e3c4.html

  4:^符号:

    4.1表示匹配一个字符串的开头     var  re=/^[a-z]/    //表示以小写字母开头的字符串     如:a45jdkl

    4.2如果^符号出现在[]中的第一个字符位置,表示不包含此字符串   var re=/[^a]    //表示字符串中不能有a   如:rgb123

  5:$符号:表示匹配一个字符串的结尾

    var re=/d$/        //表示以d结尾的字符串        如:abcd

  6:转义字符 \ 

字符 描述 备注
. 查找单个字符,除了换行和行结束符。  
\w 查找单词字符 等价于[A-Za-z0-9]
\W 查找非单词字符 等价于[^A-Za-z0-9]
\d 查找数字。 等价于[0-9]
\D 查找非数字字符。 等价于[^0-9]
\s 查找空白字符。 包括空格、TAB、换页符
\S 查找非空白字符。  
\b 匹配单词边界  
\B 匹配非单词边界。  
\0 查找 NUL 字符。  
\n 查找换行符。  
\f 查找换页符。  
\r 查找回车符  
\t 查找制表符。  
\v 查找垂直制表符。  
\xxx 查找以八进制数 xxx 规定的字符。  
\xdd 查找以十六进制数 dd 规定的字符。  
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。  

  

7:量词  

量词 描述 例子
n+ +号表示匹配任何包含至少一个 n 的字符串 var re=/\d+/  如:abcdefg
n* 匹配任何包含零个或多个 n 的字符串。 var re=/ab*/  如:a123abb
n? 匹配任何包含零个或一个 n 的字符串 var re=/do(es)?/  如:doAnddoes
n{X} 匹配包含 X 个 n 的序列的字符串。 var re=/[0-9]{2}/  如:abc
n{X,Y} 匹配包含 X 或 Y 个 n 的序列的字符串。 var re=/[0-9]{2,3}/  如:ab
n{X,} 匹配包含至少 X 个 n 的序列的字符串。 var re=/[0-9]{2,}  如:abc
?=n 匹配任何其后紧接指定字符串 n 的字符串 var re=/a(?=12|34)  如:a12a34a67
?!n 匹配任何其后没有紧接指定字符串 n 的字符串。 var re=/a(?!12|34)  如a66a77a12

一些常用的javaScript正则表达式:

  1:用户名正则

    var userPattern=/^[a-zA-Z0-9-_]{4-16}$/                //用户名只能由4-16位的大小写字母、数字、-、_组成

  2:密码强度正则

    var passPattern=/^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*?]).*$/    //至少是有6位,必须至少要有一个数字、大小写字母,特殊字符

  3:整数正则

    var intPattern=/^\d+$/正整数  var intPattern1=/^-\d$/负整数     var intPattern2=/^-?\d$/所有整数

  4:Email正则

    var emailPattern=/^([a-zA-Z0-9_\-\.])+\@([a-zA-Z0-9_\-\.])+\.([a-zA-Z]{2-4})$/    //注:这里的+号不是连接,而是与前面的小括号连接,表示要有一个或多个字符

  5:中文正则

    var chinesePattern=/^[\u4e00-\u9fa5]+$/

  6:手机号码正则

    var iphonePattern=/^(1[0-9]{10})$/

  这里只列举了一部分常用的正则,如有需要可查看更多正则:http://www.jqhtml.com/6915.html    //日期正则,身份证正则,URL正则,IPV4正则等。

正则表达式的方法:

  1:test()方法:在字符串中查找符合正则的内容,若查找得到返回true,否则false;

    格式:正则.test(字符串);

    emailPattern.test("123_456@qq_mail.com")    //返回true

  2:search()方法:搜索符合正则的第一次出现的位置,若搜索到返回第一次出现的位置,否则返回-1。

    格式:字符串.search(正则);

    var str="abcd@mail.com";    str.search(/@/);  //返回4

  3:match()方法:获取正则匹配的结果,以数组的形式返回。

    格式:字符串.match(正则);

    "123ab45cd678".match(/\d+/g);    //返回 [123,45,678],若这里不是全局匹配则返回["123",index:0,"123ab45cd678"],就只会返回第一个

  4:exec()方法:捕获符合正则的字符串,若捕获到符合正则的字符串返回一个Array的实例,但它包含了两个额外的属性index和input。index表示符合正则字符串出现的位置;input表示字符串表达式的字符串。

    格式:正则.exec(字符串)

    var textArray=/.bc/.exec("abc12abc3abc45");      //textArray.index=0;textArray.input="abc12abc3abc45";textArray[0]=abc;

    var textArray=/.bc/g.exec("abc12bbc3cbc45");      //textArray.index=0;textArray[0]="abc";textArray[1]="bbc";textArray[2]="cbc";

  5:replace方法:用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

    格式:字符串.replace(正则|字符串,字符串|回调函数)

    5.1字符串.replace(字符串,字符串|回调函数)      //这里回调函数必须返回的是一个字符串

      "abcde12345abc".replace("abc","mmm");    //return:mmmde12345abc

    5.2字符串.replace(正则,字符串)

      "abcde12345abc".replace(/abc/g,"mmm");    //return:mmmde12345mmm

    5.3字符串.replace(正则,回调函数)

      每匹配到一个正则就会调用一次回调函数,每次回调都会传递以下参数:

        result:本次匹配到的结果

        $1-$9:正则中有多少个()就表示有多少个参数

        offset:记录本次匹配的开始位置

        source:接受匹配的原始字符串

      replace搭配JS正则的一些案例:

        5.3.1:去掉字符串两边的空格

        "   abc   ".replace(/(^\s+)|(\s+$)/g,function(){

          return "";

        })

        5.3.2:提取URL中的参数和参数值

          var obj={};

          var url="www.emilzs.com/action?name=emilzs&age=18"

          url.replace(/([^&=]+)=([^&=]*)/gi,function(rs,$1,$2){

            obj[$1]=$2;                  //注:当第一次匹配到正则时$1为name,$2为emilzs。当第二次匹配到正则时$1为age,$2为18

          })      

        5.3.4:在指定位置插入新字符串

          str.replace(/(.{3})/,function(rs,$1){

            return $1+"xyz";                  //注:其实这种方法的意思就是将str字符串前3个字符替换成前3个字符+"xyz"

          })

        5.3.5:将电话号码加密

          var str=number.slice(3,7);

          number.replace(new RegExp(str,g),"******");      15123456789  -->   151*****789

JS正则表达式学习总结的更多相关文章

  1. JS正则表达式学习记录

    JS:正则表达式学习记录 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  2. js正则表达式学习

    //几种字符串操作:var str = 'abcdef'; alert(str.search('b')); //弹出1:返回的是b在str中的位置:如果找不到返回-1: alert(str.subst ...

  3. Js正则表达式学习之test和compile的简单介绍

    RegExp 对象用于规定在文本中检索的内容. 定义 RegExp RegExp 对象用于存储检索模式. 通过 new 关键词来定义 RegExp 对象.以下代码定义了名为 patt1 的 RegEx ...

  4. js 正则表达式学习笔记

    正则表达式正则表达式是由一个字符序列形成的搜索模型 语法new RegExp("[abc]")/[abc]//正则表达式主体/修饰符(可选) 1.修饰符i 忽略大小写g 执行全局匹 ...

  5. 【正则】精通JS正则表达式,没消化 信息量太大,好文

    http://www.jb51.net/article/25313.htm 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用 ...

  6. js之学习正则表达式

    看了掘金的一个作者写的JS正则表达式完整教程 受益匪浅,感谢作者的无私奉献.在此,做下笔记. 目录 0. 目录 1. 正则表达式字符匹配 1.1.字符组 1.2.量词 1.3.多选分支 1.4.案例分 ...

  7. js正则表达式replace里有变量的解决方法用到RegExp类

    一直比较害怕使用正则表达式,貌似很深奥很复杂的样子,所以在用js操作字符串的时候,我最多使用的是replace.split.substring.indexOf等函数,这些函数有时候需要多次叠加使用,但 ...

  8. JS正则表达式大全(整理详细且实用)

    JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释, ...

  9. js 正则学习小记之NFA引擎

    原文:js 正则学习小记之NFA引擎 之前一直认为自己正则还不错,在看 次碳酸钴,Barret Lee 等大神都把正则玩的出神入化后发现我只是个战五渣.  求抱大腿,求大神调教. 之前大致有个印象,正 ...

随机推荐

  1. 题解 [HNOI2002]DNA分子的最佳比对 (洛谷P2268)

    题目传送门 (这道题告诉我:初始化要小心) 有没有一点最长公共子序列的赶脚(口胡) 但我觉得挺像 设 表示匹配到s1的第i位,s2的第j位,则有 的初始化要注意:根据的含义,表示s1[i]一直在匹配空 ...

  2. Identity Service

    Identity Service - 解析微软微服务架构eShopOnContainers(二)   接上一篇,众所周知一个网站的用户登录是非常重要,一站式的登录(SSO)也成了大家讨论的热点.微软在 ...

  3. 破解百度翻译页面api参数加密

    我们的目标 https://fanyi.baidu.com/      找到获取翻译的请求 是这个 https://fanyi.baidu.com/v2transapi 查看一下post提交的表单,是 ...

  4. Zepto事件模块源码分析

    Zepto事件模块源码分析 一.保存事件数据的handlers 我们知道js原生api中要移除事件,需要传入绑定时的回调函数.而Zepto则可以不传入回调函数,直接移除对应类型的所有事件.原因就在于Z ...

  5. css经典布局之双飞翼

    经典的两个布局方式有圣杯布局和双飞翼布局,圣杯布局主要用在国外,双飞翼布局是淘宝的UED团队开发的,优化了圣杯布局.   主要解决页面分不同列显示的问题,   一般只做页面的时候,我们分三部分,左边, ...

  6. PHPStorm2017.1.3永久激活方法之本地破解激活

    是时候升级你的phpstorm了,咱们马上行动! 下载 1.phpstorm https://www.jetbrains.com/phpstorm/download/ 2.破解包 破解补丁无需使用注册 ...

  7. 【css】css2实现两列三列布局的方法

    前言 对于 flex 弹性布局相信大家都有所了解,它是 css3 中的属性,然而它具有一定的兼容性问题.楼主前几天面试时遇到了面试官需要设计一个两列布局,我当然就说父元素 flex 吧哩吧啦,然而需要 ...

  8. webm视频转换 其他视频格式转换为webm格式

    将其他视频格式转换为webm格式 https://files.cnblogs.com/files/bubuchu/html5videoshipingeshizhuanhuanqi.zip

  9. Python 之excle的读写

    一.读取Excel 注:要先安装xlrd 代码如下: #-*- coding: utf8 -*-import xlrd   #引入读excle的类#fname = "reflect.xls& ...

  10. jsp另外五大内置对象之out输出

    <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding= ...