‘JavaScript’ 分类的存档

[转载]利用正则表达式排除特定字符串 – 薰衣草的旋律 – 博客园. 1.例子,查找不以baidu开头的字符串。 baidu.com sina.com.cn 正则:^(?!baidu).*$  匹配结果就是第2行,也就是第1行被排除了 这里使用了零宽度断言(?!exp),注意,我们有一个向前查找的语法(也叫顺序环视)  (?=exp) (?=exp) 会查找exp之前的【位置】如果将等号换成感叹号,就变成了否定语义,也就是说查找的位置的后面不能是exp 一般情况下?!要与特定的锚点相结合,例如^行开头或者$行结尾,那么上面的例子的意思如下: ^(?!baidu).*$ 先匹配一个行开头的位置,并且要求接下来的位置的后面不是baidu这个字符串。这样由于第一行^之后的位置后面是baidu所以匹配失败,被排除在外了。 2.例子,查找不以com结尾的字符串。 www.sina.com.cn www.educ.org www.hao.cc www.baidu.com www.123.com 正则 ^.*?(?<!com)$  匹配前3行结果。 如果查找以com结尾的字符串则使用正则 ^.*?(?<=com)$或者 ^.*?com$ 对正则表达式的解释:^.*?(?<!com)$ 首 先匹配行开头,让后是 .*? 这个是忽略优先,也就是优先忽略不匹配任何字符,(?<!com) 这个是一个逆序环视的否定形式,意思是匹配一个位置此位置的前面不能是字符串com,最后是一个行结束。对于www.123.com来说,首先匹配行首, 接着匹配w后面的位置,发现前面不是com,所以成功但紧接着要匹配行尾,失败,回溯让.*? 匹配一个w符号,接着(?<com)匹配第二个w后面的位置,发现前面也不是com匹配成功,紧接着要匹配$对应的行尾失败,一直到.*?匹配了 www.baidu.com的时候,此时(?<!com)匹配m后面的位置,此时此位置的前面是com匹配直接失败,接着.*?匹配行末尾, (?<!com)匹配$后面的位置,显然这次也失败了,所以整个全局匹配都失败。  www.123.com被排除到匹配之外。这里的.*后面加不加问号结果都一样。 3.例子查找不含有if的行 if (a>b) printf(“hello”); else if(a<b) printf(“hello2″); else printf(“hello3″); 正则 ^([^f]|[^i]f)+$ 其实这个匹配也是一个排除型字符串的匹配,但是不同于上面两种,因为这里的if可能既不在行开头,也不在行结尾,而是在字符串中间这样就给匹配带来了麻烦,在正则表达式中没有提供类似排除的功能。我们最容易想到的就是下面的正则: ^[^if]+$ 这种写法看起来是那么回事,但是排除型字符组排除的是i和f两个字符,而不是if这个字符串,所以这个正则表达式匹配的是那些既没有i字符也不包含f字符 的字符串。但是如果字符串中有一个i或多个i或者有一个或多个f,或者i和f字符都有只不过没有连在一起。这些情况都是我们需要匹配的情况,而我们不能匹 [...]

2012年5月9日08:49 没有评论

[转载]JS单元测试工具Qunit – 前端组qianduanzu.com – 博客园. 随着html5的普及和客户端脚本引擎的强大,之前由后端进行的页面渲染和部分业务逻辑逐渐移至到前端,照成前端逻辑和代码迅速复杂 化。如果没有一款合适的单元测试工具保证前端单元模块的正确功能,对后期的代码调试和维护会造成很大的麻烦,今天就介绍一款单元测试框架 — Qunit Qunit刚开始属于JQuery项目,专门用于测试JQuery单元模块。现在已经从JQuery项目中独立出来,你可以在https://github.com/jquery/qunit下载到最新版的Qunit,解压后里面有很多目录,对我们有用的其实只有qunit目录下的qunit.js和qunit.css。   下面来个简单的示例: 新建一个html文档,贴入以下代码: <!– 这里引用的是jQuery官网上的Qunit,项目中为了加快下载可以放到本地 –> <script type="text/JavaScript" src="http://code.jQuery.com/qunit/git/qunit.js"></script> <h1 id="qunit-header">QUnit example</h1> &nbsp; &nbsp; <h2 id="qunit-banner"></h2> &nbsp; <div id="qunit-testrunner-toolbar"></div> &nbsp; <h2 id="qunit-userAgent"></h2> &nbsp; &nbsp; <div id="qunit-fixture">test markup, will be hidden</div> <script type="text/JavaScript">// <![CDATA[ test("a basic test example", function () { ok(true, "this test is fine"); [...]

2012年5月7日09:57 没有评论

[转载]Jeditable – jQuery就地编辑插件使用 – 孟晨 – 博客园. jeditable是一个JQuery插件,它的优点是可以就地编辑,并且提交到服务器处理,是一个不可多得的就地编辑插件。(注: 就地编辑,也有称即时编辑?一般的流程是这样的,当用户点击网页上的文字时,该文字就会出现在一个编辑框中,用户对文字进行修改完成后点击提交按钮,新的文本将发送到服务器上,然后表单消失,显示最新编辑的文本。),你可以通过这个演示页面来亲自体验下。 官网:http://www.appelsiini.net/projects/jeditable 基本的使用方法如下: 首先编辑一个 html 文件,包含这么一段: <div class=”edit” id=”div_1″>Dolor</div> <div class=”edit_area” id=”div_2″>Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.</div> 然后我们使用如下的 JS 代码来实现即时编辑(要先引入 Jeditable 插件): $(document).ready(function() { $(‘.edit’).editable(‘http://www.example.com/save.php’); });   实现不同内容的编辑以及更多的定制项: $(document).ready(function() { $(‘.edit’).editable(‘http://www.example.com/save.php’, { indicator [...]

2012年5月3日16:29 评论关闭

[转载]广告影响网站打开速度解决方案 – 前端组qianduanzu.com – 博客园. 在自己博客上放广告联盟的广告也是一种收入来源。就我个人知道的有谷歌广告、阿里妈妈、百 度、网易游戏,还有个台湾的BloggerAds,是从无限博客那得知的。然而放入广告后会对网页打开速度有一些影响,有一个致命的问题。比如你把广告放 在了网页顶部或靠上的位置,如果不做处理的话,那要等到这个广告加载完之后才能显示下面的正文内容。如果这个广告加载速度很慢,那这段时间下面的正文就会 空白一片。用户体验非常不好。 前端组在这里提供解决方案,有需要的朋友认真看看下面的代码,相信会对你的博客有好处。 方法一: 使用onload事件,某些广告不支持这个方法,如BloggerAds。Google广告是支持的。BloggerAds请看第二种方法。 HTML(代码放在广告位置) <div id=”sidebarAdBox”> <p>广告正在努力加载中…</p> <textarea id=”sidebarAd” style=”display:none;”> 注意:此处放广告联盟提供的广告代码 </textarea> </div> JS(放在页面最后面) 1 var sidebarAdBox = document.getElementById(‘sidebarAdBox’); 2 var sidebarAd = document.getElementById(‘sidebarAd’); 3 window.onload = function(){ 4 sidebarAdBox.innerHTML = sidebarAd.value; 5 }; 方法二: 原理是把广告代码放到页面底部,则就是差不多最后加载了。先把生成的广告隐藏,再把它拿到自己相应的位置,再显示出来,OK! HTML 1 (代码放在广告位置) 1 <div id=”sidebarAdBox”> 2 <p>广告正在努力加载中…</p> 3 </div> [...]

2012年5月2日13:04 评论关闭

[转载]Json2String – 高捍得 – 博客园.   //扩展JQuery对json字符串的转换 JQuery.extend({ /** * @see 将json字符串转换为对象 * @param json字符串 * @return 返回object,array,string等对象 */ evalJSON: function (strJson) { return eval("(" + strJson + ")"); } }); JQuery.extend({ /** * @see 将JavaScript数据类型转换为json字符串 * @param 待转换对象,支持object,array,string,function,number,boolean,regexp * @return 返回json字符串 */ toJSON: function(object) { var type = typeof object; if (‘object’ == type) [...]

2012年4月28日17:34 评论关闭
备案信息:冀ICP备10007948号