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. response.setContentType() 作用及参数用法

    笔者感冒了,转载大神的 https://blog.csdn.net/luman1991/article/details/53423305 下载中设置文件名称 https://blog.csdn.net ...

  2. myeclipse 最佳设置

    http://www.cnblogs.com/wuyifu/p/3593035.html

  3. 076 Minimum Window Substring 最小窗口子字符串

    给定一个字符串 S 和一个字符串 T,找到 S 中的最小窗口,它将包含复杂度为 O(n) 的 T 中的所有字符.示例:S = "ADOBECODEBANC"T = "AB ...

  4. 我的grunt配置

    module.exports = function(grunt) { // 配置. grunt.initConfig({ pkg: grunt.file.readJSON('package.json' ...

  5. .net 中 Json 与List 相互转

    var duanxin1 = new DuanXin(); duanxin1.RECEIVE_LOGIN_NAME = "dd"; duanxin1.RECEIVE_Number ...

  6. sqlserver跟据当天年月日日期查询数据库当天数据

    select * from Client where  CONVERT(varchar(100), Cli_Datetime, 23) ='2017-11-06' 在查询之前要对表中datetime类 ...

  7. 第十九章 排查和调试Web程序 之 防止和排查运行时问题

    1. 概述 常见的几种运行时问题包括 错误数据.慢于预期的响应.未知行为 或者 未处理的异常. Visual Studio 提供了 排查.跟踪 和 日志 等工具 来帮助排查系统的问题.有些情况还需要插 ...

  8. linux创建文件的四种方式(其实是两种,强行4种)

    linux创建文件的四种方式: 1.vi newfilename->i->编辑文件->ESC->:wq! 2.touch newfilename 3.cp sourcePath ...

  9. webservice、soap、wsdl

    搜集了一些关于webservice.soap.wsdl的基本知识,解决工作中遇到的疑问 一 .什么是webservice(用你的话描述webservice)?在什么时候用webservice(webs ...

  10. Windows Azure 配置Active Directory 主机(4)

    步骤 6:设置在启动时加入域的虚拟机 若要创建其他在首次启动时加入域的虚拟机,请打开 Windows Azure PowerShell ISE,粘贴以下脚本,将占位符替换为您自己的值并运行该脚本. 若 ...