正则表达 regular expression(有规律的 表达 )
测试字符串的某个模式。例如,可以测试字符串是否存在一个电话号码模式或email格式。这称为数据有效性验证
替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字
根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字
------------------------------------------------------------------------------------- 正则表达式语法
一个正则表达式就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。
该模式描述在查找文字主体时待匹配的一个或多个字符串。
正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
创建正则表达式
var re = new RegExp(); //RegExp是一个对象,和Array一样 ,但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去
re =new RegExp("a");//最简单的正则表达式,将匹配字母a
re=new RegExp("a","i");//第二个参数,表示匹配时不分大小写
--------------------------------------------------------------------- 方括号
方括号用于查找某个范围内的字符:
表达式 描述
[abc] 查找方括号之间的任何字符
[^abc] 匹配任何不在方括号之间的字符
[0-9] 匹配任何从 0 至 9 的数字
[a-z] 匹配任何从小写 a 到小写 z 的字符
[A-Z] 匹配任何从大写 A 到大写 Z 的字符
[A-z] 匹配任何从大写 A 到小写 z 的字符
-------------------------------------------------------------------- 小括号
用于匹配分组
/(ab|cd)+|ef/ 匹配字符串"ab" 或者 "cd" 的一次或多次重复. 也可以是字符串 "ef",
---------------------------------------------------------------------
元字符(Metacharacter)是拥有特殊含义的字符:
元字符 描述
. 查找单个字符,除了换行和行结束符
\w [a-zA-Z0-9_] 匹配字母数字和下划线
\W [^a-zA-Z0-9_] 匹配 除 字母数字下划线之外的字符
\d [0-9] 匹配数字
\D [^0-9] 匹配 非 数字字符
\s [\n\r\t\f\x0B] 匹配一个空白字符
\S [^\n\r\t\f\x0B] 匹配一个 非 空白字符
\b 匹配单词边界
\B 匹配 非 单词边界
\0 匹配 NUL 字符
\n 匹配 换行符
\f 匹配 换页符
\r 匹配 回车符
\t 匹配 制表符
\v 匹配 垂直制表符
直接量字符:
\/ 匹配 /
\\ 匹配 \
\. 匹配 .
\* 匹配 *
\+ 匹配 +
\? 匹配 ?
\| 匹配 |
\( 匹配 (
\) 匹配 )
\[ 匹配 [
\] 匹配 ]
\{ 匹配 {
\ } 匹配 }
\’ 匹配 单引号
\” 匹配 双引号
\xxx 查找以八进制数 xxx 规定的字符
\xdd 查找以十六进制数 dd 规定的字符
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符
------------------------------------------------------------------- 量词
量词 描述
* 匹配零次或多次 例如,zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。
+ 匹配一次或多次 例如,‘zo+‘ 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。 +等价于 {1,}。
? 匹配零次或一次 例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} 匹配确定的 n 次, n 为非负整数。 例如,‘o{2}‘ 不能匹配 "Bob" 中的 ‘o‘,但是能匹配 "food" 中的两个 o。 {n,} n 是一个非负整数。至少匹配n 次。 例如,‘o{2,}‘ 不能匹配 "Bob" 中的 ‘o‘,但能匹配 "foooood" 中的所有 o。‘o{1,}‘ 等价于 ‘o+‘。‘o{0,}‘ 则等价于 ‘o*‘。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如: "o{1,3}" 将匹配 "fooooood" 中的前三个 o。‘o{0,1}‘ 等价于 ‘o?‘。请注意在逗号和两个数之间不能有空格。
--------------------------------------------------------------------------- 位置限制
^ 匹配任何开头为的字符串 例如 ,^n 匹配任何开头为 n 的字符串
$ 匹配任何结尾为的字符串 例如 ,n$ 匹配任何结尾为 n 的字符串
--------------------------------------------------------------------------------------------------
贪婪量词: 贪婪模式尽可能多的匹配
? * + {n} {n,m} {n,}
惰性量词: 惰性模式尽可能少的匹配
用惰性量词进行匹配时,它首先将第一个字符当成一个匹配,如果成功则退出,如果失败,则测试前两个字符,依些增加,直到遇到合适的匹配为止。贪婪量词与贪婪量词的方法正好相反. 惰性量词仅仅在贪婪量词后面加个"?"而已,如"a+"是贪婪匹配的,"a+?"则是惰性的 ?? *? +? {n}? {n,m}? {n,}?
var str="abbbbcc";
贪婪: /[ab]+b/ 结果:abbbb
惰性: /[ab]+?b/ 结果:ab
例子: var str = ‘aabbazbbwwbbaa‘; var arr =str.match(/.*bb/); //aabbazbbwwbb,贪婪的 var arr =str.match(/.*?bb/g); //aabb azbb wwbb 返回一个数组包含3个值,惰性的
--------------------------------------------------------------------------- 方法
方法 描述
exec 检索字符串中指定的值。获取字符串中的第一个与正则表达式的内容,并且将匹配的内容和子匹配的结果存放在返回数组中 test 检索字符串中指定的值。返回 true 或 false。
支持正则表达式的 String 对象的方法
方法 描述 search 检索与正则表达式相匹配的值
match 找到一个或多个正则表达式的匹配,没有找到任何匹配的文本,返回 null,否则,返回一个数组,
replace 替换与正则表达式匹配的子串
split 把字符串分割为字符串数组
-------------------------------------------------------------------------- 修饰符
修饰符 描述 i 忽略大小写 g 全文查找 m 多行查找
--------------------------------------------------------------------------- 正则表达式的() [] {}有不同的意思。
() 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。
[]是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。
{}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s[1,3]表示匹配一到三个空格。
------------------------------------------------------------------------- 字符集
[\u4e00-\u9fa5] 所有汉字
[u00-uff] 所有单字节字符
[^\x00-\xff] 匹配双字节字符(包括汉字在内):
在线 Unicode编码转换
http://tool.chinaz.com/tools/unicode.aspx
\u706b\u661f\u65f6\u4ee3 火星时代
----------------------------------------------------------------------------
常用正则表达式:
身份证:
身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
Email地址:
英文或者数字下划线、减号、 英文或者数字下划线 @ -减号 点 英文或者数字下划线
var reg=/\w+([-.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?
匹配html标签的正则表达式:<(.*)>(.*)<\/(.*)>|<(.*)\/>
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配空白行的正则表达式(可以用来删除空白行):\n\s*\r
匹配双字节字符(包括汉字在内):[^\x00-\xff]
只能输入汉字:/^[\u4e00-\u9fa5]{0,}$/
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线 表单验证时很实用):^[a-zA-Z][a-zA-Z0-9_]{4,15}$