一、正则表达式中常用的符号

  虽然可以使用string函数来完成验证,但是这种验证方式不够严谨,而且编写比较麻烦。而正则表达式是一种描述字符模式的对象,由一些特殊的符号组成,其组成的字母模式用来匹配各种表达式。下表中列举出常用的符号和用法。

正则表达式中常用的符号和用法
符号 描述
 /....../  代表一个模式的开始和结束。
 ^  匹配字符串的开始 
 $  匹配字符串的结束
 \s  任何空白字符 
 \S  任何非空白字符 
 \d  匹配一个数字字符,等价于[0-9]。 
 \D  匹配数字之外的任何数字,等价于[^0-9]。 
 \w  匹配一个数字,下划线或者字母字符,等价于[A-Za-z0-9_]。 
 \W  匹配非单字字符,等价于[^A-Za-z0-9_] 
.  除了换行符之外的任意字符。

  上表中的字符表示可以匹配哪些字符,字符可以出现的次数同样需要用特殊符号表示。如下标所示。

  

正则表达式的重复字符
符号 描述
{n} 匹配前一项n次。
{n,} 匹配前一项n次以上。
{n,m} 匹配前一项n次,但不能超过m次。
* 匹配前一项0次或多次,等价于{0,}
+ 匹配前一项1次或多次,等价于{1,}
? 匹配前一项0次或者1次,也就是说前一项是可选的,等价于{0,1};

  通过上面两张表,可以了解正则表达式的一些符号的作用,其中"$","+","?","*","^",".","\"等符号都被赋予了特殊的含义,如果在正则表达式中需要匹配这些字符本身,需要使用转移字符反斜杠"\"来进行匹配,比如"\."表示匹配一个".",\$表示匹配一个"$"符号。

二、正则表达式的RegExp对象。

  RegExp(Regular Expression,正则表达式)对象时对象时对字符串执行模式匹配的强大工具。定义正则表达式有两种方式,一种是普通方式,另一种是构造函数方式。

  1、普通方式:

  var reg = /表达式/附加函数

  在语法中:

  表达式:一个字符串,指定了正则表达式的模式。

  附加参数:用来扩展表达式的含义,主要有一下3个参数:

  g:代表可以进行全局匹配。

  i:代表不区分大小写匹配。

  m:代表可以进行多行匹配。

  上面3个参数可以任意组合,代表复合含义,当然也可以不加参数。

  例:  

   var reg = /blue/;

  var reg = /blue/gi;

  var reg = /^\d{2,8}$/m;

  var reg = /^\w+@\w+(\.[A-Za-z]{2,3}){1,2}$/;  //电子邮件  

  2、构造函数方式

  var reg = new RegExp(表达式,附加参数);

  其中表达式和附加参数的含义和上面完全相同,

  例如:

var reg = new RegExp("blue");
var reg = new RegExp("blue","g");

  如果表达式是正则表达式而不是字符串时,"可以省略。

  var reg = new RegExp(/^\w+@\w+(\.[A-Za-z]{2,3}){1,2}$/);

  

  注意:

  普通方式中的表达式必须是一个常量字符串,而构造函数中的表达式可以是常量字符串,也可以使一个JavaScript变量。例如:根据用户输入的值作为正则表达式的参数:

  var reg = new RegExp(document.getElementById("id").value,"g");

  

  3、test()

  test(string)方法用于验证字符串是否符合要求,如果符合返回true,不符合则返回false。

  

var email = "zhangsan@qq.com";
var reg = new RegExp(/^\w+@\w+(\.[A-Za-z]{2,3}){1,2}$/);
reg.test(email);

  结果:true

  

三、String对象和正则表达式

  JavaScript除了支持RegExp对象的正则表达式方法外,还支持String对象的正则表达式方法,String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法,String常用的方法如下所示:

  1、match():

  match()方法可以再字符串内检索指定的值,找到一个或多个正则表达式的匹配。

  语法:

  字符串对象.match(searchString或regexpObject);

  searchString是要检索的字符串的值

  regexpObject是规定要匹配模式的regexp对象。

  例如:  

var str = "my cat";
var reg = /cat/;
var result=str.match(reg);

  result的值为:cat。

  2、search():

  search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。该方法不执行全局匹配,返回子字符串的第一个匹配的位置,如果没找到任何匹配的子串,则返回-1,与String的indexOf()方法类似。

  语法:

  字符串对象.search(searchString或regexpObject);

  searchString是要检索的字符串的值

  regexpObject是规定要匹配模式的regexp对象。

  例如:

var str = "hello rock!rock!";
var result = str.search(/rock/);

  result的值为:6;

  3、replace():

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

  语法:

  字符串对象.replace(RegExp对象获字符串,"替换的字符串")

  如果设置了全文检索,则符合条件的RegExp或字符串都将被替换,否则只替换第一个,返回替换后的字符串,例如:

var str = "My little white cat,is really a very lively cat";
var result = str.replace(/cat/,"dog");
var results = str.reaplace(/cat/g,"dog");

  result的值: My little white dog,is really a very lively cat

  results的值:My little white dog,is really a very lively dog

  4、split():

  split()方法将字符串分割成一系列子串并通过一个数组将这一系列子串返回。

  语法:

  字符串对象.split(分隔符,n);

  分隔符可以使字符串,也可以使正则表达式。n为限制输出数组的个数,为可选项,如果不设置n,则返回包含整个字符串的元素数组,例如:

   var str = "red,blue,green,white";
  var result = str.split(",");
  var string = "";
  for(var i = 0;i<result.length;i++){
    string+=result[i] + "_";
  }
  document.write(string);

  结果为:

  red_blue_green_white_;

  

  

  

Java Script基础(十二) 正则表达式的更多相关文章

  1. Java Script基础(二) 基本语法

    一.变量的声明和使用 JavaScript是一种弱类型的语言,没有明确的数据类型,在声明变量时,不需要指定变量的类型,变量的类型由赋给变量的值决定. 变量声明的语法: var 变量名; 示例: var ...

  2. Java基础十二--多态是成员的特点

    Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...

  3. Bootstrap <基础十二>下拉菜单(Dropdowns)

    Bootstrap 下拉菜单.下拉菜单是可切换的,是以列表格式显示链接的上下文菜单.这可以通过与 下拉菜单(Dropdown) JavaScript 插件 的互动来实现. 如需使用下列菜单,只需要在 ...

  4. Java设计模式(十二) 策略模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/design_pattern/strategy/ 策略模式介绍 策略模式定义 策略模式(Strategy Pattern) ...

  5. Java script基础

    Java script基础 Js的每个语句后面都要有分号. <script  type="text/java script">所有JS内容</script> ...

  6. “全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  7. “全栈2019”Java多线程第十二章:后台线程setDaemon()方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  8. “全栈2019”Java异常第二十二章:try-with-resources语句详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  9. “全栈2019”Java异常第十二章:catch与异常匹配

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

  10. “全栈2019”Java第一百一十二章:什么是闭包?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. 理解C#值类型和引用类型

    网上偶尔浏览到这一篇文章,还不错就修改了下分享给大家. 工作许久了,可是对C#值类型和C#引用类型却一直无法很好的理解.这两天花了不少时间查找资料,看文章,终于有所收获,在此将自己理解整理出来,方便日 ...

  2. CentOS7安装telnet服务

    CentOS7.0 telnet-server 启动的问题.解决方法:    ①.先检查CentOS7.0是否已经安装以下两个安装包:telnet-server.xinetd.命令如下:    rpm ...

  3. Objc中2维指针作为输出参数时由ARC及@autoreleasepool引发的血案

    先看下面一个例子 #import <UIKit/UIKit.h> #import "AppDelegate.h" @interface Something : NSOb ...

  4. cocos2d-x 使用Lua

    转自:http://www.benmutou.com/blog/archives/49 1. Lua的堆栈和全局表 我们来简单解释一下Lua的堆栈和全局表,堆栈大家应该会比较熟悉,它主要是用来让C++ ...

  5. PL/pgSQL学习笔记之四

    http://www.postgresql.org/docs/9.1/static/plpgsql-structure.html 39.2. PL/pgSQL 的结构 PL/pgSQL是一种块式结构的 ...

  6. [转]Swift Cheat Sheet

    原文:http://kpbp.github.io/swiftcheatsheet/ A quick cheat sheet and reference guide for Apple's Swift ...

  7. hdu 5273 Dylans loves sequence 逆序数简单递推

    Dylans loves sequence Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem ...

  8. Microsoft.AlphaImageLoader滤镜解说

    Microsoft.AlphaImageLoader是IE滤镜的一种,其主要作用就是对图片进行透明处理.尽管FireFox和IE7以上的IE浏览器已经支持透明的PNG图片,可是就IE5-IE6而言还是 ...

  9. JavaScript实现http地址自动检测并添加URL链接

    一.天生我材必有用 给http字符自动添加URL链接是比较常见的一项功能.举两个我最近常用到的自动检测http://地址并添加链接的例子吧,首先是QQ邮箱,在使用QQ邮箱时,如果输入了URL地址(ht ...

  10. 查询记录时rs.previous()的使用

    查询记录时rs.previous()的使用 假如查询一个数据表,假设没有记录就显示提示信息,有就所有显示出来查询结果.这时假设是有查询结果的话就须要进行两次查询,第一次查完记录指针指向最后一条记录,開 ...