作为模式匹配下文本替换、搜索、提取的强有力工具,正则表达式(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>

JScript中正则表达函数的说明与应用相关推荐

  1. python 正则表达函数_python笔记-正则表达式常用函数

    1.re.findall()函数 语法:re.findall(pattern,string,flags=0) --> list(列表) 列出字符串中模式的所有匹配项,并作为一个列表返回.如果无匹 ...

  2. python中正则表达以及多线程,建立服务器端

    多重继承 我们先来看一下代码: class Father(object):def __init__(self, name):self._name = namedef drink(self):print ...

  3. Nginx中~^正则表达什么意思

    这里代表正则表达式匹配: ~^ 表示匹配以什么规则开头. 1. 正则表达式是一种特殊的字符串模式,用于匹配一组字符串,就好比用模具做产品,而正则就是这个模具,定义一种规则去匹配符合规则的字符. 举例: ...

  4. Doris Routine Load正则表达实战

    Doris Routine Load正则表达实战 1. Kafka安装 #1.下载安装包 wget https://dlcdn.apache.org/kafka/3.2.0/kafka_2.13-3. ...

  5. python中search用法_Python3中正则模块re.compile、re.match及re.search函数用法详解

    本文实例讲述了Python3中正则模块re.compile.re.match及re.search函数用法.分享给大家供大家参考,具体如下: re模块 re.compile.re.match. re.s ...

  6. hive函数regexp_extract提取固定长度的数字信息(正则表达)

    hive正则表达 regexp_extract(string subject, string regex_pattern, string index) 说明:抽取字符串subject中符合正则表达式r ...

  7. python中import re_Python3中正则模块re.compile、re.match及re.search函数用法详解

    本文实例讲述了Python3中正则模块re.compile.re.match及re.search函数用法.分享给大家供大家参考,具体如下: re模块 re.compile.re.match. re.s ...

  8. python正则findall函数的用法_python中正则表达式 re.findall 用法

    python中正则表达式 re.findall 用法 Python 正则表达式 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配. Python 自1.5版本起增加了r ...

  9. 相对引用和绝对引用日期在excel中的表达rank函数

    文章内容输出来源:拉勾数据分析训练营 第一章EXCEL学习 相对引用和绝对引用的说明 区别: 在使用相对引用时,公式或函数中的行或列会随着行号和列标的变化而自动变化. 绝对引用的特点就是在使用绝对引用 ...

最新文章

  1. 北大95后「AI萝莉」回来了,一次中8篇顶会论文的她,现在达摩院开源7大NLP模型...
  2. SAP Commerce的extensioninfo.xml
  3. 学习过程中的一些细节
  4. Struts2学习笔记(十九) 验证码
  5. 懒人小技巧, Toad 常用偷懒方法
  6. 黑马程序员Java教程学习笔记(一)
  7. 洪水攻击程序c语言,洪水攻击原理及代码实现全攻略(附源代码)病毒防范 -电脑资料...
  8. java逻辑表达式的计算和优化
  9. 2022国产芯片技术创新与市场应用论坛即将召开
  10. 2013年微软校园招聘笔试题
  11. 需要来自administrator的权限才能删除
  12. 芮城县县名由来 芮伯庙 古魏城 芮伯万 永乐县
  13. poj 计算几何 分类
  14. 表单提交后跳转指定链接
  15. 基于Redis实现查找附近的人
  16. LQ0023 三羊献瑞【枚举】
  17. 使用nfs为k8s提供pv动态供给存储
  18. 一口气看完——PythonGUI界面编程入门到实战项目
  19. H3C路由器配置DHCP,交换机透明。
  20. Gson源码解析之-toJson

热门文章

  1. Matplotlib学习笔记1
  2. 用keepalived配置高可用,监控NGINX服务
  3. 某虚拟化项目中思科与华为交换机链路聚合互连案例
  4. jmeter插件下载
  5. ImportError : No module named graphics
  6. java来做Web Service,用哪个框架最好?
  7. ios 应用程序证书安装以及发布
  8. SQL Server 2005 14420 14421错误
  9. 如何在一个日期值上加上分钟值得到新的日期
  10. python 三目运算符