JavaEye3.0开发手记之二 - rails的UTF-8支持造成的正则表达式问题

rails的ActionView::Helpers::TextHepler模块提供了很多实用的方法,这些方法对于论坛类应用非 常有用,例如 auto_link这个方法可以自动检测传入字符串当中的URL,并将其自动转换为HTML超链接格 式,这对于显示帖子的内容来说很不错。

但是在开发JavaEye3.0的时候,却发现auto_link有bug,一旦帖子当中的URL后面紧跟中文的话, auto_link就会把URL后面所有的中文当做URL的一部分进行格式化,直到碰到空格为止,例如:

引用

http://www.javaeye.com网站很不错

就会被格式化为:

引用

<a href="http://www.javaeye.com网站很不错">http://www.javaeye.com网站很不错 </a>

看来得到rails的源代码里找答案了。

打开netbeans,敲快捷键Ctrl+O,在弹出窗口输入:texthelper,回车,netbeans已经帮我打开了 text_helper.rb源代码,通过Navigator窗口,很方便的定位到auto_link方法,仔细看一下,原来主要是 这个正则表达式在起作用:

Ruby代码

AUTO_LINK_RE = %r{ 
        (             # leading text 
         <\w+.*?>|        # leading HTML tag, or 
         [^=!:'"/]|        # leading punctuation, or 
         ^            # beginning of line 
        ) 
        ( 
         (?:https?://)|      # protocol spec, or 
         (?:www\.)        # www.* 
        ) 
        ( 
         [-\w]+          # subdomain or domain 
         (?:\.[-\w]+)*      # remaining subdomains or domain 
         (?::\d+)?        # port 
         (?:/(?:(?:[~\w\+%-]|(?:[,.;:][^\s$]))+)?)* # path 
         (?:\?[\w\+%&=.;-]+)?   # query string 
         (?:\#[\w\-]*)?      # trailing anchor 
        ) 
        ([[:punct:]]|\s|<|$)    # trailing text 
        }x unless const_defined?(:AUTO_LINK_RE)

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索正则表达式
, 源代码
, 方法
, 中文
, rails
, javaeye
, javaeye基础
, javaey
, 不错
, 一个不错的正则
之不错的应用
rails 正则表达式、rails、ruby on rails、tiny rails、ruby on rails 教程,以便于您获取更多的相关知识。

时间: 2024-08-04 11:07:03

JavaEye3.0开发手记之二 - rails的UTF-8支持造成的正则表达式问题的相关文章

JavaEye3.0开发手记之四 - ruby的全文检索

在Java平台上面,lucene是众望所归的全文检索工具,lucene性能不俗,程序稳定,第三方扩展和分 词算法众多,但是在RoR方面,就没有那么幸运了,JavaEye网站要做全文检索,怎么来解决全文检索的问 题呢? 在ruby平台上面,全文检索有三个途径: 1.solr, acts_as_solr solr是apache开源组织的一个项目,完全基于lucene的最新版本,在lucene的上层提供了一个基于 HTTP/XML的Web Services.solr的发行包自己绑定了jetty6.0应

JavaEye3.0开发手记之三 - 狮身人面

Sphinx的含义是"狮身人面像",是古埃及的金字塔建筑,传说Sphinx是有翼的狮身女怪,她常叫过 路行人猜谜, 猜不出者即遭杀害. 但是我这里说的Sphinx是一个高性能的搜索引擎: http://www.sphinxsearch.com/ Sphinx是一个俄国人开发的搜索引擎,它的主要特点是: 一.性能非常出色 150万条记录一两分钟就索引完毕,2-4GB以内的文本检索速度不到0.1秒钟.ferret也望尘莫及,更不 要说lucene了. 二.和数据库集成性很好 Sphinx通

JavaEye3.0开发手记之一

第一步就是搭建一个趁手的开发环境.我没有MacBook电脑,只有一台三年前买的IBM T40,跑MacOSX 很勉强,还是在WindowsXP上面做开发吧.既然在WindowsXP上面开发,那IDE选什么呢?我选netbeans Ruby IDE: 一. RoR IDE http://deadlock.netbeans.org/hudson/job/ruby/ 你可以从这个地方下载Ruby IDE专用版本的netbeans,只有30MB大小,速度比RadRails还快! netbeans的RoR

开心网辅助程序开发手记(二):获取好友私家车位信息

在上篇手记<开心网辅助程序开发手记>中,简单记录了如何登录开心网,获取"争车位"的相关数据:玩家(泊车者)信息.玩家车辆停车信息.玩家私家车位停车情况等.在这篇手记中,将简单描述如和获取玩家好友信息及玩家私家车位停车情况.话不多说,进入正文. 一.获取玩家好友信息 其实在上篇手记中,有提到v_frienddata变量,其实玩家好友信息就是以JSON格式保存在该变量里的,我们只需要写好对应的实体,再利用Json.NET做个转换就可以了.由于上篇没有详细介绍如何使用Json.N

开发手记(二)——津城丢车促使项目筹备实现

当立项建议经评审通过后,软件公司的机构领导接着会任命项目经理,由项目经理去筹备项目.财务部门.人力资源部门为新团队的组建提供必要的财力和人力资源. 作为以合作的形式开发共享软件,人力和财力的筹备就成为项目组织者一个人要操心的事了.粗略计算一下如果以聘用的形式组建开发团队,普通成员需3人,每人每月工资2000,开发时间为1年,软件的人力成本超过7万元,总体开支预算超过10万.虽然将来软件的版权容易划分,但风险性太大,弄不好就闹成人财两空的悲剧,这也是软件迟迟停留在分析阶段的主要原因.寻找志同道合的

Nodejs开发框架Express3.0开发手记–从零开始

转载请注明出处:http://blog.fens.me/nodejs-express3/ 程序代码已经上传到github有需要的同学,自行下载.https://github.com/bsspirit/nodejs-demo 从零开始nodejs系列文章 从零开始nodejs系列文章, 将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的 Javascript引擎.chrome浏览器就基于V8,同时打开20-30个网页都

开心网辅助程序开发手记(三):实现停车功能

在前面的两篇手记中,较为详细的介绍了如何借助工具对网页进行分析及如何编写代码实现一些简单的功能.如果还有后续手记,笔者将只简单记录<开心网辅助程序>开发过程中碰都的主要问题及解决方法. 在这篇手记中,笔者将简单描述如何实现简单的停车功能,并且制作一个简单的界面用于呈现系列手记的开发成果. 一.识别好友私家车位中的免费车位:把车停到免费车位中可是会分文无收到,所以千万不能把车停到免费车位上了. 通过Firebug调试发现,当玩家点击"争车位"中部Flash中的停车按钮时,pa

二、Angular 2.0开发指南以及搭建开发环境

自第一章讲Angular2.0的简单开发入门,我们了解到ng2的开发实践是围绕着web-component来展开的,ng2中更加强化了Component的概念,弱化了指令的概念(实际上Component是复杂指令).同时我们学习到web-component中数据和视图是如何互相影响的,即Input和Output的概念,数据通过Input往view以及view里的子组件传递,view及其子组件通过Ouput来改变数据(VM通过数据绑定机制实现互通,View <- data-bindings ->

开心网辅助程序开发手记

声明:本人只在业余空闲时间写写<开心网辅助程序>,目的只是学习! 由于之前有写过类似的程序,也写过相关的文章介绍过(C#网站登录学习笔记(一):登录简单网站.C#网站登录学习笔记(二):访问需登录后才能访问的页面),这次写起"开心网辅助程序"也可以算是得心应手了,直接从电脑中翻出尘封已久的HttpHelper(前面提到的两篇文章就是居于这个操作类进行的),稍微分析了一下网页结构(争车位),就写起程序来了! 在开始写手记前,让我们看看写这样的"外挂"程序需