易截截图软件、单文件、免安装、纯绿色、仅160KB

简单的正则表达式 JavaScript翻译器

最近,我参考,根据正则表达式构建DFA(确定的有穷自动机)的技术,完成了一个从正则表达式到JavaScript的翻译器。
翻译器是针对chrome和firefox设计的,没有在其他浏览器中测试过。
Google Code上的源代码:http://code.google.com/p/nephotools/source/browse/#svn/trunk/regexpQuery
regexpQuery.js中定义了regexpQuery()方法,main.html提供了一个程序的UI。
翻译器根据正则表达式生成一个函数,翻译器接受的参数有
String name:生成的函数的名称
String regexp:需要翻译的正则表达式
Boolean ignoreSpace:是否忽略正则表达式中的空白字符
Boolean backward:此参数为true时生成的函数逆向匹配正则表达式
翻译器的返回值就是生成的代码
生成的函数接受2个参数:
String s:进行匹配的字符串
Number o(可选):匹配的起始位置,逆向匹配时,默认值为s的长度-1,否则为0
返回匹配的字符串
翻译器支持的正则表达式语法在main.html的表格中(来自MDC)
生成的函数进行匹配时不进行查找,也就是函数找到的字符串一定是s的前缀或后缀
翻译器目前也还不支持空串(预计将来会支持)
翻译器由三部分组成,词法分析和语法分析器生成一棵语法树,第二部分计算nullable,firstpos,lastpos,followpos(或prevpos)的值,
最后是代码生成器生成代码。
翻译器的最基本元素是字符类,由一个长度为偶数的一维数组表示,每两个相邻的元素表示一个字符编码的区间,整个数组表示所有区间的并集。
字符类是语法树中的所有叶子节点,并且DFA的状态也是字符类组成的数组
翻译器中包含了三个基本的操作函数,addCharacterClass,removeCharacterClass和splitCharacterClass
前两者完成的功能相当于并集和补集,而splitCharacterClass将,新的区间除去它与已有区间的并集的部分,加入字符类


相关文档:

javascript开发系列(运算符)

今天在补习javascript中。遇到几个相对陌生的运算符,特别在此写下来。
1、三元运算符?:,这是js中唯一一个三元运算符(这和C#中的一样),用法如下
   var x=1;
  var y=3;
  (x>y)?(x-y):(y-x);
2、typeof运算符
  typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型。 ......

分享JavaScript在线压缩工具

This tool will let you optimize your JavaScript (JScript) code by removing comments, whitespace as well as other unnecessary characters as well as by optionally shortening function / variable / class names.
http://www.xtreeme.com/javascript-optimizer/ ......

IE与Firefox在JavaScript上的7个不同句法

尽管那需要用长串的、沉闷的不同分支代码来应付不同浏览器的日子已经过去,偶尔还是有必要做一些简单的区分和目标检测来确保某块代码能在用户的机器上正常运行。在这篇文章中,作者介绍了7个在IE和Firefox中不同的JavaScript句法。
1. CSS "float" 值
 
访问一个给定CSS 值的最基本句法是:object.style.property, ......

Javascript知识精华

<script    language="JavaScript" type="text/javascript" >
<!--
         .
//-->
</script>
.language已经被弃用,但为了兼容旧版本浏览器而保留,所以建议同时使用这language和type两个
.<!---     //-->& ......

FireFox浏览器复制到剪贴板功能的javascript源代码

根据浏览器复制到剪贴板的功能,具体代码如下:
var txt="要复制到剪贴板的内容";
function copyToClipboard(txt) {
     if(window.clipboardData) {
             window.clipboardData.clearData();
    &nb ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号