前言
正则表达式是我们经常要用到的检验字符串的是否合法的一个技术点,正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
正文
构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为"元字符")组成的文字模式。模式描述在搜索文本时要匹配的一个或多个字符串。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
//应用举例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" >
/*
* 技术要求: 当用户点击了验证是否合法按钮,要提示输入的内容是否合法
* 验证合法性的规则是: 必须由字母, 数字。 下划线组成。 并且长度是 5 到 12 位。
* */
function onclickFun() {
// 先获取这个标签对象。
var usernameObj = document.getElementById("username");
var usernameText = usernameObj.value;
// 验证 字符串, 符合某个规则
var patt = /^\w{5,12}$/;
/*
* test()方法用于测试某个字符串, 是不是匹配我的规则 ,
* 匹配就返回 true。 不匹配就返回 false.
* */
var usernameSpanObj = document.getElementById("usernameSpan");
if (patt.test(usernameText)) {
alert("用户名合法! ");
} else {
alert("用户名不合法! ");
}
}
</script>
</head>
<body>
用户名: <input type="text" id="username" value="wzg"/>
<span id="usernameSpan" style="color:red;">
</span>
<button onclick="onclickFun()">验证是否合法</button></body>
</html>
以下是常用的正则表达式
要求 | 正则表达式 |
只能输入数字 | ^[0-9]*$ |
整数或者小数 | ^[0-9]+.{0,1}[0-9]{0,2}$ |
只能输入n位的数字 | ^\d{n,}$ |
只能输入至少n位的数字 | ^\d{n,}$ |
只能输入m~n位的数字 | ^\d{m,n}$ |
只能输入零和非零开头的数字 | ^(0|[1-9][0-9]*)$ |
只能输入有两位小数的正实数 | ^[0-9]+(.[0-9]{2})?$ |
只能输入有1~3位小数的正实数 | ^[0-9]+(.[0-9]{1,3})?$ |
只能输入非零的正整数 | ^+?[1-9][0-9]*$ |
只能输入由26个英文字母组成的字符串 | ^[A-Za-z]+$ |
只能输入由26个大写英文字母组成的字符串 | ^[A-Z]+$ |
只能输入由26个小写英文字母组成的字符串 | ^[a-z]+$ |
只能输入由数字和26个英文字母组成的字符串 | ^[A-Za-z0-9]+$ |
只能输入由数字、26个英文字母或者下划线组成的字符串 | ^\w+$ |
只能输入汉字 | ^[\u4e00-\u9fa5]{0,}$ |
验证Email地址 | ^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$ |
验证InternetURL | ^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$ |
验证电话号码 | ^((\d{3,4}-) |
正确格式为 | XXX-XXXXXXX |
验证身份证号(15位或18位数字) | ^\d{15}|\d{18}$ |
验证一年的12个月 | ^(0?[1-9]|1[0-2])$ |
验证一个月的31天 | ^((0?[1-9])|((1|2)[0-9])|30|31)$ |
匹配html标签 | <(.*)>(.*)<\/(.)>|<(.)\/> |
^[1-9]\d{4,8}$ | |
国际通用的电话号码 | ^(1[0-2]\d|\d{1,2})$ |
结束
根据以上的常用表达式可以根据自己的需要去更改适合自己项目的新的表达式。