Script

本类阅读TOP10

·一个简单的javascript菜单
·网站流量统计代码
·可编辑的 HTML JavaScript 表格控件 DataGrid II
·JavaScript通用库(一)
·在网页中控制wmplayer播放器
·层遇到select框时
·TYPEING TEST ON LINE 在线打字测试 Free Software Javascript (aiiiq)
·javascript表单之间的数据传递!
·让网页自动穿上外套
·搜索gb2312汉字在网上的频率

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
JScript中正则表达函数的说明与应用

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

作为模式匹配下文本替换、搜索、提取的强有力工具,正则表达式(Regular Expression)的应用已经从unix平台逐渐渗入到网络开发中了,作为服务器端/客户端的脚本开发语言JScript,正越来越多将正则表达式应用融入其中,以弥补自身在文本上处理能力的不足。在此,我们以JScript5.5版本为例,对其中的正则表达式的应用作一个概述。
首先我们需要区分JScript中关于正则表达式的两个对象:Regular Expression对象和RegExp对象。
前者仅包含一个特定的正则表达式实例的信息,而后者通过一个全局变量的属性来反映最近模式匹配的特性。
前者在匹配前需要指定匹配模式,即创建一个Regular Expression对象的实例,而后可以把它传递给一个字符串方法,或是把一个字符串作为参数传递给这个Regular Expression实例的方法;而后者无需创建,它是一个固有的全局对象,每次成功匹配操作结果信息被保存在这个对象的属性中。

一、RegExp对象的属性:反应最近一次成功匹配的结果信息

input  :保存执行匹配的字符串(被搜索的目标字符串)(>=IE4)
index  :保存匹配的首字符的位置*>=IE4)
lastIndex :保存匹配的字符串的下一个字符的位置(>=IE4)
lastMatch($&) :保存匹配到的字符串(>=IE5.5)
lastParen($+) :保存匹配结果最后一个子匹配的内容(最后一个括号的匹配内容)(>=IE5.5)
leftContext($`) :保存目标字符串中匹配子字符串前的所有字符 (>=IE5.5)
rightContext($'):保存目标字符串中匹配子字符串后的所有字符 (>=IE5.5)
$1 - $9  :保存匹配中最开始的9个子匹配(即最开始的9个括号内的匹配结果)(>=IE4)

二、Regular Expression对象简介
1.Regular Expression对象定义
在脚本中使用正则表达式模式匹配,首先腰设定匹配模式,方法有如下两种
(1)rgExp=/pattern*/[flags*]
(2)rgExp=new RegExp("pattern",["flags"])
注意:
a.后者模式中的转义字符“\”需要用“\\”表示,用以抵消JS中转义字符"\"的意义,否则JS首先作为自己的转义概念来解释"\"后的字符。
b.flags标识有以下几个(至JScript 5.5版本)
  g:设定当前匹配为全局模式
  i:忽略匹配中的大小写检测
  m:多行搜索模式
2.Regular Expression对象属性
(1)rgExp.lastIndex:匹配结果后面一个字符的位置,同RegExp.lastIndex
(2)rgExp.source:reExp对象的正则表达式匹配模式
3.Regular Expression对象方法
(1)rgExp.compile(pattern,[flags])
将rgExp转化为内部格式,以加快匹配的执行,这对于大量模式一致的匹配更有效
(2)rgExp.exec(str)
按照rgExp的匹配模式对str字符串进行匹配查找,当rgExp对象中设定了全局搜索模式(g),则匹配查找从RegExp对象lastIndex属性所指定的目标字符串位置开始;若没有设置全局搜索,则从目标字符串第一个字符开始搜索。若没有任何匹配发生,返回null。
需要注意的是该方法将匹配结果放在一个数组内返回,该数组有三个属性
input:包含目标字符串,同RegExp.index
index:匹配到的子字符串在目标字符串中的位置,同RegExp.index
lastIndex:匹配到的子字符串后面一个字符的位置,同RegExp.lastIndex
(3)rgExp.test(str)
返回布尔值来反映被查找的目标字符串str中是否存在符合匹配的模式。该方法不改变RegExp的属性
4.与正则表达式相关的方法
主要是指字符串对象中应用模式匹配的方法
(1)stringObj.match(rgExp)
根据rgExp对象的正则表达式模式查找字符串stringObj中的匹配字符项,将结果以数组形式返回。该数组有三个属性值,与exec方法返回的数组属性相同。若没有任何匹配,返回null。
需要注意的是,若rgExp对象未设定全局匹配模式,则数组0下标元素为匹配的整体内容,1~9包含了子匹配得到的字符。若设定了全局模式,则数组包含了搜索到的所有整体匹配项。
(2)stringObj.replace(rgExp, replaceText)
返回一个字符串,即将stringObj中符合rgExp模式匹配的字符串替换成replaceText后返回。需要注意的是stringObj本身并不因为替换操作而改变。若期望stringObj中所有符合正则表达式模式的字符串被替换,则在建立正则表达式模式时要设定为全局模式。
(3)stringObj.search(rgExp)
返回第一个匹配到的子字符串的位置

符号名词解释:
位置:表示子字符串与目标字符串首字符的偏移
reExp:表示一个Regular Expression对象实例
stringObj:表示一个字符串对象
pattern:正则表达式模式
flags:匹配操作的模式标识

在实际web程序开发中我们可以有针对性的使用正则表达式来达到我们字符串处理的要求
如下附上四个使用正则表达式的JScript例程,这些例子主要用来熟悉正则表达式的使用。

1.email地址有效性检测
<script language='JScript'>
function validateEmail(emailStr)
{
 var re=/^[\w.-]+@([0-9a-z][\w-]+\.)+[a-z]{2,3}$/i;
 //或 var re=new RegExp("^[\\w.-]+@([0-9a-z][\\w-]+\\.)+[a-z]{2,3}$","i");
 if(re.test(emailStr))
 {
  alert("有效email地址!");
  return true;
 }
 else
 {
  alert("无效email地址!");
  return false;
 }
}
</script>

2.字符串替换操作
<script language='JScript'>
var r, pattern, re;
var s = "The rain in Spain falls mainly in the plain falls.";
pattern = /falls/ig;
re = s.replace(re,'falling');
alert('s = ' + s + '\n' + 're = ' + re);
</script>

3.模式查找字符串
<script language='JScript'>
var index, pattern;
var str = "four for fall fell fallen fallsing fall falls waterfalls ";
pattern = /\bfalls\b/i;
index = str.search(pattern);
alert('The position of match is at ' + index);
</script>

3.正则表达式属性例程
<script language='JScript'>
function matchAttrib()
{
   var s='';
   var re = new RegExp("d(b+)(d)","ig");
   var str = "cdbBbdbsbdbdz";
   while((arr = re.exec(str))!=null)
   {
    s += "=======================================<br>";
    s += "$1 returns: " + RegExp.$1 + "<br>";
    s += "$2 returns: " + RegExp.$2 + "<br>";
    s += "$3 returns: " + RegExp.$3 + "<br>";
    s += "input returns : " + RegExp.input + "<br>";
    s += "index returns : " + RegExp.index + "<br>";
    s += "lastIndex returns : " + RegExp.lastIndex + "<br>";
    s += "lastMatch returns: " + RegExp.lastMatch + "<br>";
    s += "leftContext returns: " + RegExp.leftContext + "<br>";
    s += "rightContext returns: " + RegExp.rightContext + "<br>";
    s += "lastParen returns: " + RegExp.lastParen + "<br>";
    s += "arr.index returns: " + arr.index + "<br>";
    s += "arr.lastIndex returns: " + arr.lastIndex + "<br>";
    s += "arr.input returns: " + arr.input + "<br>";
    s += "re.lastIndex returns: " + re.lastIndex + "<br>";
    s += "re.source returns: " + re.source + "<br>";
   }
   return(s);                            //Return results.
}
document.write(matchAttrib());
</script>




相关文章

相关软件




月光软件程序下载编程文档电脑教程网站设计网址导航网络文学游戏天地幽默笑话生活休闲写作范文安妮宝贝
电脑技术编程开发网络专区谈天说地情感世界游戏元素分类游戏热门游戏体育运动手机专区业余爱好影视沙龙
音乐天地数码广场教育园地科学大观古今纵横谈股论金人文艺术医学保健动漫图酷二手专区地方风情各行各业

月光软件站·版权所有