Java Script基础(十二) 正则表达式

Java Script基础(十二) 正则表达式

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

  虽然可以使用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 = /^\[email protected]\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(/^\[email protected]\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 = "[email protected]";
var reg = new RegExp(/^\[email protected]\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_;

时间: 2024-10-24 23:31:43

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

Java Script基础(二) 基本语法

一.变量的声明和使用 JavaScript是一种弱类型的语言,没有明确的数据类型,在声明变量时,不需要指定变量的类型,变量的类型由赋给变量的值决定. 变量声明的语法: var 变量名; 示例: var num; //直接声明一个变量,不赋值 var num = 10 //声明变量并赋值,类型由赋值的值决定. 注意: 1.JavaScript区分大小写,特别是变量的命名.语句关键字等. 2.变量可以不经声明而直接使用:例如:num=20,但这种方法很容易出错,也很难查找排错,所以不推荐使用. 二.

Java Script基础(十) 访问样式表

Java Script基础(十) 访问样式表 动态控制样式表 在JavaScript中,有两种方式可以动态的改变样式属性,一种是使用style属性,另一种是使用样式的className属性.另外控制元素隐藏和显示使用display属性. 1.使用sytle属性 语法: 元素.style.样式属性="值"; 在JavaScript中使用CSS样式与在html中使用CSS少有不同,由于JavaScript中的-表示减号,因此如果样式属性名称中带有"-"则要省去,后面首字

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

Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println(f.num);//是父类,答案是3 2,成员函数(非静态). 编译看左边,运行看右边. 因为成员函数存在覆盖特性. Fu f = new Zi();//f.show();输出的是子类里面的show方法 3,静态函数. 编译和运行都看左边. 静态函数不具备多态性,多态性是对象的多态性,然后静态函数不涉

Bootstrap &lt;基础十二&gt;下拉菜单(Dropdowns)

Bootstrap 下拉菜单.下拉菜单是可切换的,是以列表格式显示链接的上下文菜单.这可以通过与 下拉菜单(Dropdown) JavaScript 插件 的互动来实现. 如需使用下列菜单,只需要在 class .dropdown 内加上下拉菜单即可.下面的实例演示了基本的下拉菜单: <!DOCTYPE html> <html> <head> <title>Bootstrap 实例 - 下拉菜单(Dropdowns)</title> <li

Java Script基础(八) Array数组对象

Java Script基础(八) Array数组对象 一.Array数组 JavaScript中的数组也是具有相同数据类型的一个或者多个值得集合.用法和Java中的数组类似. Array对象的常用属性和方法: 属性: length:获取数组的长度: 方法: join():把数组中的所有元素放入一个字符串中,通过分隔符进行分隔. sort():对数组元素进行排序. 1.创建数组 语法: var a1 = new Array();           //创建一个数组,长度为0: var a2 = 

Java Script基础(一)

Java Script基础(一) 一.为什么学习JavaScript 学习JavaScript主要有以下两点原因. 1.客户端表单验证. 2.实现页面交互(网页特效) 二.什么是JavaScript JavaScript是一种描述语言,是一种基于对象(Object)和事件驱动(Event Driven)的,安全性好的脚本呢语言.它运行在客户端,从而减轻吴福气的负担.其特点如下: 1.JavaScript主要用来向HTML页面添加交互行为. 2.JavaScript主要用来向HTML页面中添加交互

【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder

[喵"的Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final类,主要用于字符串的处理. 1.1 不可变性 String内的字符串是不可变的,每一次修改都会重新生成一个新的String对象实例. 例: 1 // 在堆中会创建一个"Hello"字符串实例,把地址赋给对象a 2 String a = new String("Hello&

Java Script基础(三) 函数

Java Script基础(三) 函数 一.JavaScript中的函数 在JavaScript中,函数类似于Java中的方法,是执行特定功能的代码块,可以重复调用.JavaScript中的函数分为两种,一种是系统函数,另一种是自定义函数. 1.系统函数 系统函数有JavaScript提供,直接调用即可,常用的系统函数包括: parseInt():转换为整数. parseFloat() :转换为浮点数. isNaN():判断是否是非数字,为非数字返回true,数字返回false. eval():

Java Script基础(四) BOM模型

Java Script基础(四) BOM模型 一.BOM模型 BOM模型(Browser Object Model),也称为浏览器对象模型,它包含浏览器相关的属性和方法,例如操作,前进后退按钮,控制地址栏,关闭浏览器窗口,打开新窗口等等.它包含的对象主要有一下几种. 1.Window对象 Window对象时指整个窗口对象,可以通过操作Window对象的属性和方法控制窗口,例如打开和关闭一个窗口. Window常用的属性和方法查询: 2.History对象 History指浏览器访问过得历史记录,