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. JavaScript进阶 - 第2章 你要懂的规则(JS基础语法)

    第2章 你要懂的规则(JS基础语法) 2-1什么是变量 什么是变量? 从字面上看,变量是可变的量:从编程角度讲,变量是用于存储某种/某些数值的存储器.我们可以把变量看做一个盒子,盒子用来存放物品,物品 ...

  2. AD中添加中文字符丝印的方法:

    一 一般中文丝印: 用快捷键L打开层管理,在View options中勾选convert special 选项: 用快捷键P,S文本中输入你要的汉字,选中ture type,在select ture ...

  3. 《java学习三》jvm性能优化------jconsul

    利用jconsul检测线程死锁,    死锁的线程,会有   已锁定    三个字 visualVm                       也在jdk里 VisualVM 是一款免费的,集成了多 ...

  4. C#oracle还原imp实例

    C#来做oracle还原,调用oracle自带函数imp.exe时,需要注意的是:1.imp.exe 中fromuser 和touser两个关键字: fromuser与exp.exe中的owner对应 ...

  5. logback整合Logstash

    1.依赖 <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logsta ...

  6. GitHub上优秀Android 开源项目

    GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你 ...

  7. python-day1作业(感谢视频老师留的作业)

    __author__ = 'zht' #!/usr/bin/env python # -*- coding: utf-8 -*- ''' #努力学习每一天 ''' #尝试次数计数器 tries = 0 ...

  8. Git基础使用教程(仓库初始化,源码clone,源码push)

    一.下载Git源码管理客户端 Git下载地址:https://git-scm.com/ 二.检查电脑是否已安装Git 1)已安装:输入git出现下图提示则代表已安装成功. 2)未安装情况下git会出现 ...

  9. gd调试命令,gdb调试core文件

    使用 gcc -g test.c -o test.out 编译程序,只有加-g参数才支持gdb调试: 然后 gdb ./test.out 运行可执行文件,进入gdb调试模式(gdb),在括号后面的输入 ...

  10. uva 10328 - Coin Toss 投硬币(dp递推,大数)

    题意:抛出n次硬币(有顺序),求至少k个以上的连续正面的情况的种数. 思路:转换成求抛n个硬币,至多k-1个连续的情况种数,用所有可能出现的情况种数减去至多k-1个的情况,就得到答案了.此题涉及大数加 ...