正则表达式基础

上一篇 / 下一篇  2010-10-09 20:21:51

1、什么叫正则表达式?

    一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。

    比如:我们会用?和*来帮助查找文件,?字符匹配文件名中的单个字符,而 * 则匹配一个或多个字符

 

2、正则表达式有什么作用?

    A测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。

    B替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。

    C根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。

 

3、如何建立正则表达式?

    在JScript中,用一对正斜杠(//)来确定正则表达式的边界;

    则表达式模式 (expression) 均存储在RegExp 对象的Pattern 属性中。

    正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。

       特殊字符的匹配,需要在特殊字符前加上反斜杠(\);特殊字符包括:   

 \$

 \( 和 \)

 \*

 \+

 \.

 \[

 \?

\\

 \^

 \{

 \|

4、正则表达式中操作符的优先权顺序(由高到低):

 

操作符

描述

\

转义符

(), (?:), (?=), []

圆括号和方括号

*, +, ?, {n}, {n,}, {n,m}

限定符

^, $, \anymetacharacter

位置和顺序

|

或”操作

5、在js中如何使用正则表达式?

   RegExp是JavaScript中的正则表达式对象,利用它可以完成字符串匹配的各种操作。获得一个RegExp对象可以有两种方式:

var objRegExp=/pattern*/[flag]

//或者

var objRegExp=new RegExp("pattern" [,"flag"]);

   其中pattern是要匹配的模式,flag表示搜索模式,有两个可选参数,分别是g和i。g表示全局搜索;i表示忽略大小写,默认情况下是大小写敏感的。例如:

/jack/ig

new RegExp("jack","ig");

都表示全局匹配文本中的“jack”单词,并且忽略大小写。

   使用这两种创建方式的效果完全一样,可以直接使用。第一种方式甚至不需要引用变量,而直接把正则表达式当作对象来使用,例如:

/jack/ig.test(sourceString);

其中test就是正则表达式对象的一个方法。

与字符串相关的操作中,有三个方法需要用到正则表达式:

   (1)string.search(regularExpression)

    其中string是要处理的字符串,regularExpression是匹配模式。该方法在string中查找指定的模式,如果找到,则返回它的第一个字符的索引位置,否则返回-1。例如:

<script language="JavaScript" type="text/javascript">

var strXml="<author>jack</author>";

var i=strXml.search(/jack/);

alert(i);

</script>

    这段代码的最后结果显示为8(索引位置从0开始)。和indexOf方法不同,该方法接收的是一个正则表达式,而indexOf只能接收一个字符串。但两者的行为是类似的。

   (2)string.replace(regularExpression,replaceString)

    其中regularExpression是要查找的模式,replaceString是要替换匹配模式的字符串。regularExpression也可以用普通字符串,但那样只能替换第一个出现的匹配,之后的匹配则被忽略。使用正则表达式后可以使用全局模式来实现整个替换。替换后原有字符串不发生变化,而是返回一个新的字符串。例如:在实际开发中经常要删除一段文本中的HTML标记,以获取纯文本,可以使用如下代码实现。

<script language="JavaScript" type="text/javascript">

//定义函数用于删除文本中的Html标记

function stripTags(s) 

     return s.replace(/<\/?[^>]+>/gi, ''); 

var str=stripTags("<author>jack</author>");

alert(str);

</script>

     最后,将得到去掉Html标记后的文本“jack”。

    (3)string.match(regularExpression)

该方法根据regularExpression正则表达式模式查找字符串string中的匹配字符项,将结果以数组形式返回。该数组有3个属性值,与exec方法返回的数组属性相同。若没有任何匹配,返回null。

 

6、下表是元字符及其在正则表达式上下文中的行为的一个完整列表:

   详细使用方法可参考:http://blog.csdn.net/dh19573681/archive/2009/08/21/4471438.aspx

   详见附件

 

  资料参考:http://blog.csdn.net/grueclan/archive/2008/03/06/2153960.aspx


TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-18  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 6016
  • 日志数: 9
  • 书签数: 2
  • 建立时间: 2009-10-18
  • 更新时间: 2010-10-13

RSS订阅

Open Toolbar