对正则表达式练习器的改进

对正则表达式练习器的改进,原贴ID901680

覆盖原execIt函数

修改后的execIt函数允许对多个正则表达式进行匹配(每个正则表达式一行),并对每一个匹配成分显示出是第几个正则表达式匹配的。

这可视为语法分析的雏形,只要对匹配产生相应的动作。

function execIt(form) {

var mode

if(form.chkmode.checked) mode = "gi"

else mode = "g"

var regexpArray = form.regexp.value.split("\r\n") //获取正则表达式到数组

if(nextpoint == 0) form.reglist.value = ""

var key = true

if(form.scankmode.checked) key = false

else nextpoint = 0

do {

var offs = 9999999999

var pos = -1

var input = form.main.value.substr(nextpoint)

//对每个正则表达式进行匹配

for(var i=0;i<regexpArray.length;i++) {

re.compile(regexpArray[i],mode)

var matchArray = re.exec(input)

if(matchArray) {

if(offs > matchArray.index) {

offs = matchArray.index

pos = i //保存距离起始位子最近的匹配

}

}

}

if(pos>=0) {

re.compile(regexpArray[pos],mode)

var matchArray = re.exec(input)

for(var i=1;i<matchArray.length;i++)

matchArray[i] = "$"+i+":"+matchArray[i]

form.reglist.value = "["+(pos+1)+"]"+(nextpoint+matchArray.index)+" => " + matchArray[0] +"\n"+form.reglist.value

form.matchlist.value = "$0:"+matchArray.join("\n")

nextpoint = nextpoint + matchArray.index + matchArray[0].length

}else {

if(!key)

form.reglist.value = "没有找到\n" + form.reglist.value

form.matchlist.value = " "

nextpoint = 0

key = false

}

}while(key)

}

对正则表达式练习器的改进

时间: 2024-08-22 08:52:15

对正则表达式练习器的改进的相关文章

JAVA 正则表达式 (超详细)

(PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的JavaJDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性.在Unix世界里,正则表达式几乎没有

收集一些常用的正则表达式

正则表达式用于字符串处理,表单验证等场合,实用高效,但用到时总是不太把握,以致往往要上网查一番.我将一些常用的表达式收藏在这里,作备忘之用.本贴随时会更新. 匹配中文字符的正则表达式: [/u4e00-/u9fa5] 匹配双字节字符(包括汉字在内):[^/x00-/xff] 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace([^/x00-/xff]/g,"aa")

Java正则表达式详解

本文为转载文章,因为实在写的太好了,所以就拿过来使用了 在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性.在Unix世界里,正则表达式几乎没有什么限制,可肯定的是,它应用非常之广泛. 正则表达式的引擎已被许多普通的Unix工具所实现,包括gr

转 正则表达式超详细讲解

注**该文中的/写反的地方实践中自行改正!!! (PS:这篇文章为转载,我不喜欢转载的但我觉得这篇文章实在是超赞了,就转了过来,这篇可以说是学习JAVA正则表达的必读篇.作者是个正真有功力的人,阅读愉快) 在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换

【转】java正则表达式

在Sun的Java JDK 1.40版本中,Java自带了支持正则表达式的包,本文就抛砖引玉地介绍了如何使用java.util.regex包. 可粗略估计一下,除了偶尔用Linux的外,其他Linu x用户都会遇到正则表达式.正则表达式是个极端强大工具,而且在字符串模式-匹配和字符串模式-替换方面富有弹性.在Unix世界里,正则表达式几乎没有什么限制,可肯定的是,它应用非常之广泛. 正则表达式的引擎已被许多普通的Unix工具所实现,包括grep,awk,vi和Emacs等.此外,许多使用比较广泛

iPhone开发--正则表达式获取字符串中的内容

缘起: 想获取字符串中指定的字符,考虑用正则表达式,遂写了如下的代码: [cpp] view plaincopy NSString *htmlStr = @"oauth_token=1a1de4ed4fca40599c5e5cfe0f4fba97&oauth_token_secret=3118a84ad910967990ba50f5649632fa&name=foolshit"; NSString *regexString = @"oauth_token=(\

正则表达式 浮点数 整型

匹配首尾空格的正则表达式:(^/s*)|(/s*$) String.prototype.trim = function(){    return this.replace(/(^/s*)|(/s*$)/g, );} 利用正则表达式分解和转换IP地址: 下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序: function IP2V(ip){ re=/(/d+)/.(/d+)/.(/d+)/.(/d+)/g  //匹配IP地址的正则表达式if(re.test(i

JavaMail实现注册邮箱验证案例

在日常生活中,我们在一个网站中注册一个账户时,往往在提交个人信息后,网站还要我们通过手机或邮件来验证,邮件的话大概会是下面这个样子的:用户通过点击链接从而完成注册,然后才能登录. 也许你会想,为什么要这么麻烦直接提交注册不就行了吗?这其中很大一部分原因是为了防止恶意注册.接下来让我们一起来使用最简单的JSP+Servlet的方式来完成一个通过邮箱验证注册的小案例吧. 准备工作前提知识动手实践之前,你最好对以下知识有所了解: (1)JSP和Servlet(2)MySQL(3)c3p0(4)SMTP

servlet邮箱激活验证实例含代码

也有很多人本来有机会的,他们都拒绝了,不想让自己太累,太麻烦.或者中途被情绪所左右,半途而废了. 成长是有代价的,同样悠闲也是有代价的. 流程: 用户填写相关信息,点击注册按钮 系统先将用户记录保存到数据库中,其中用户状态为未激活 系统发送一封邮件并通知用户去验证 用户登录邮箱并点击激活链接 系统将用户状态更改为已激活并通知用户注册成功 相关知识点 JSP和Servlet Maven MySQL c3p0 SMTP协议和POP3协议 1.在邮箱设置中将下图的服务器开启,本案例使用的是QQ邮箱为发