做Web应用时经常会遇到需要用户输入文本,并且留待以后可以编辑的情况。这时候我们就不得不考虑用户输入的文本中是不是会包含HTML中的关键字的问题。
    去除HTML关键字我的办法是替换成转义字符,然后需要编辑时再把转义字符转换回来。这个步骤直接用Replace就可以,不再多说。
    这里主要是讲自动识别URL的问题,比如用户输入:
www.google.com 时自动加上超级链接标签,需要编辑时再把标签去掉。
    关于这个问题我的解决办法是使用正则表达式匹配,然后截取网址用于插入超级链接标签,转换回来时也用正则表达式匹配,然后去除标签。
    我刚开始用于匹配网址的表达式是:(
http://|www)[\S]{5,} 这个表达式看似可以,但是在实际应用时空个符和回车换行符会先被转为HTML转义字符串,这时候这个表达式匹配出来的结果就变成不是我们所要的了。
    后来我改成了 (
http://|www)[\S]{5,}(?: ) 这个表达式解决了上面所说的问题,但是测试时才发现有时候网址是写在行的结尾的或者文章结尾的,这时候就匹配不了了。并且这个表达式会捕捉到网址末尾的 这样造成生成超级链接时出错。参看了网上的正则表达式语法,明明是说(?:str)是不会捕捉str的,怎么回事呢?到现在我也没搞明白。普通字符串与HTML相互转换的小经验
    最后我写成 (
http://|www)[\S]{5,}(?= |\r\n) 就OK了,(?= str)就真的不会捕捉里面的字符串。普通字符串与HTML相互转换的小经验
    去处超级链接的正则表达式就比较简单,我的写法是:(<a href=\")[\\S]{5,}(\">)|</a>  用它匹配然后用空字符替换匹配的文本就起到去处作用了。
    具体的程序代码如下:

        }

相关文章: