恩,让我想想,第一次用正则表达式是什么时候呢。那是一个英语阅读插件,用于读取内容后,智能生成阅读标签,统计标签出现的次数和频率。通过一套算法,分析阅读者的阅读习惯。听起来是很简单的样子吧。反正我现在想着是很不简单,当时负责编写的是智能生成阅读标签模块,幸亏是英语阅读插件,英文文章各个单词之间一般有空格隔开,让我读取文章的词语简单了很多。要是中文的可话得整死我。
生成阅读标签的核心就是词语的提取和语法的分析,这当中难免用到正则表达式。正则表达式是什么样的一个东西呢,可以这么说,正则表达式是一个筛选并提取字符的机器。
正则表达式的大部分基本知识可以在微软官网找到。举几个简单的例子说明一下吧。
/^\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 οnblur="if(this.value.replace(/^ +| +$/g,'')=='')alert('不能为空!')">
</tr>
<tr>
只能输入英文和数字:
<input οnblur="if(/[^0-9a-zA-Z]/g.test(value))alert('有错')">
<input οnkeyup="value=value.replace(/[^0-9a-zA-Z]/g,'')"/>
<input type="text" οnkeyup="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" οnkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')">
</tr>
<tr>
只能输入英文:
<input type="text" οnkeyup="value=value.replace(/[^\a-\z\A-\Z]/g,'')">
<input type="text" οnkeyup="value=value.replace(/[^a-zA-Z]/g,'')">
</tr>
<tr>
只能输入中文、英文、数字、@符号和.符号:
<input type="text" οnkeyup="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5\@\.]/g,'')">
</tr>
<tr>
只允许输入英文,且不能粘贴也无法弹出粘贴菜单:
<input type="text" οnkeyup="value=value.replace(/[^\a-\z\A-\Z]/g,'')" οnkeydοwn="fncKeyStop(event)" οnpaste="return false" oncontextmenu = "return false"/>
</tr>
<tr>
只能输入数字和点号(注意:在[^\d\.]里的d不能写成大写D,否则就变成除了数字以外的所有字符):
<input name="price" type="text" size="8" maxlength="8" οnkeyup="value=value.replace(/[^\d\.]/g,'')" >
</tr>
</table>
</body>
</html>