html-正则表达式的应用
正则表达式在html中主要用于表单验证,常见的表单验证有:必填项验证、长度验证、特殊内容格式验证、验证两个表单控件的值是否相等、电子邮箱的格式验证等等。
1、正则表达式由两种基本字符类型组成:普通字符和元字符
普通字符只能匹配字符串中与它们相同的字符,例如所有的字母和数字;
元字符指那些在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符在目标对象中的出现模式。例如^ $ . * + ? = ! : | \ / ( ) [ ] { }
普通字符:
字符 | 匹配 | 字符 | 匹配 |
字母或数字 | 自身对应的字母或数字 | \? | 一个?直接量 |
\f | 换页符 | \| | 一个|直接量 |
\n | 换行符 | \( | 一个(直接量 |
\r | 回车 | \) | 一个)直接量 |
\t | 制表符 | \[ | 一个[直接量 |
\v | 垂直制表符 | \] | 一个]直接量 |
\/ | 一个/直接量 | \{ | 一个{直接量 |
\\ | 一个\直接量 | \} | 一个}直接量 |
\. | 一个.直接量 | \XXX | 由十进制数XXX指定的ASCII码字符 |
\* | 一个*直接量 | \Xnn | 由十六进制数nn指定的ASCII码字符 |
\+ | 一个+直接量 | \cX | 控制字符^X |
元字符:
字符 | 说明 | 字符 | 说明 |
[] | 用来匹配所包含字符集合中的任意一个字符 | \b | 回退(并删除)一个字符(Backspace) |
. | 匹配除换行符以外的任意一个字符 | \f | 换页符 |
\w | 匹配任意一个字母或数字或下划线,等价于[0-9a-zA-Z] | \n | 换行符 |
\W | 匹配除了字母或数字或下划线或汉字以外的任意一个字符,等价于[^0-9a-zA-Z] | \r | 回车符 |
\s | 匹配任意一个空白符,等价于[\f\n\r\t\v] | \t | 制表符(Tab键) |
\S | 匹配任意一个空白字符,等价于[^\f\n\r\t\v] | \v | 垂直制表符 |
\d | 匹配一个数字字符,等价于[0-9]或[0123456789] | * | 重复0次或更多次 |
\D | 匹配一个非数字字符,等价于[^0-9]或[^0123456789] | + | 重复一次或更多次 |
\b | 匹配单词的开始或结束 | ? | 重复0次或1次 |
^ | 匹配字符串的开始 | {n} | 重复n次 |
$ | 匹配字符串的结束 | {n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
2、正则表达式用 / 标记开始和结束
3、修饰符
修饰符标记位于表达式之外,格式为:/pattern/flags
g 修饰符:可以查找字符串中所有的匹配项(区分大小写)
i 修饰符:不区分大小写匹配
m 修饰符:可以使 ^ 和 $ 匹配一段文本中每行的开始和结束位置
我们看一下加m和不加m的区别:
s修饰符:默认情况下的圆点 . 是 匹配除换行符 \n 之外的任何字符,加上 s 修饰符之后, . 中包含换行符 \n
我们举个例子吧:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>正则表达式</title> <script> // 电信号规则: // 长度11位 // 号段前三个数字是133、153、180、181、189 window.onload=function(){ var mobileArr=["13312345678","13712345678","18012345678", "189123456789","1531234567","181123456789"]; var pattern=/^1[35]3\d{8}|18[019]\d{8}$/; document.write("手机号列表如下:<br>"); for(i=0;i<mobileArr.length;i++){ document.write(mobileArr[i]+"<br>"); } document.write("<br>符合电信手机号规则的列表如下:<br>"); for(i=0;i<mobileArr.length;i++){ if(pattern.test(mobileArr[i])) document.write(mobileArr[i]+"<br>"); } } </script> </head> <body>
运行页面为: