编程回忆之java回忆(正则表达式)

来源:互联网 发布:cassandra数据库教程 编辑:程序博客网 时间:2024/04/29 12:39
 恩,让我想想,第一次用正则表达式是什么时候呢。那是一个英语阅读插件,用于读取内容后,智能生成阅读标签,统计标签出现的次数和频率。通过一套算法,分析阅读者的阅读习惯。听起来是很简单的样子吧。反正我现在想着是很不简单,当时负责编写的是智能生成阅读标签模块,幸亏是英语阅读插件,英文文章各个单词之间一般有空格隔开,让我读取文章的词语简单了很多。要是中文的可话得整死我。

        生成阅读标签的核心就是词语的提取和语法的分析,这当中难免用到正则表达式。正则表达式是什么样的一个东西呢,可以这么说,正则表达式是一个筛选并提取字符的机器。

         正则表达式的大部分基本知识可以在微软官网找到。举几个简单的例子说明一下吧。

        /^\s*$/          ——匹配空行。
        /\d{2}-\d{5}/   ——验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。
        /<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/   ——匹配HTML标记

在开发中,输入框经常需要验证一些特殊的输入,比如最经常用的验证邮箱输入,HTML的验证输入也是常用正则表达式进行验证的,我下面简单列出几条验证输入的样式,虽然是老代码了,但是实用价值还是很大的。下面是示例代码。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>test.html</title>    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="this is my page">    <meta http-equiv="content-type" content="text/html; charset=UTF-8">    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->  </head>  <body>    <table>   <tr>     不能为空:     <input onblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('不能为空!')">   </tr>   <tr>     只能输入英文和数字:     <input onblur="if(/[^0-9a-zA-Z]/g.test(value))alert('有错')">  <input onkeyup="value=value.replace(/[^0-9a-zA-Z]/g,'')"/>  <input type="text" onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9]/g,'')">   </tr>   <tr>    只能输入数字:    <input name="text" type="text" id="NewPage" onKeyUp="value=value.replace(/\D/g,'')" onafterpaste="value=value.replace(/\D/g,'')" >    </tr>   <tr>只能输入中文:<input type="text" onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')">   </tr>   <tr>     只能输入英文:     <input type="text" onkeyup="value=value.replace(/[^\a-\z\A-\Z]/g,'')">     <input type="text" onkeyup="value=value.replace(/[^a-zA-Z]/g,'')">     </tr>   <tr>    只能输入中文、英文、数字、@符号和.符号:    <input type="text" onkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\@\.]/g,'')">   </tr> <tr>    只允许输入英文,且不能粘贴也无法弹出粘贴菜单:    <input type="text" onkeyup="value=value.replace(/[^\a-\z\A-\Z]/g,'')" onkeydown="fncKeyStop(event)" onpaste="return false" oncontextmenu = "return false"/>   </tr>   <tr>    只能输入数字和点号(注意:在[^\d\.]里的d不能写成大写D,否则就变成除了数字以外的所有字符):    <input name="price" type="text" size="8" maxlength="8" onkeyup="value=value.replace(/[^\d\.]/g,'')" >   </tr>   </table>  </body></html>

0 0
原创粉丝点击