JavaScript正则表达式
一、如何使用正则表达式?
1、字面量
var reg =/\bis\b/; var demo = "this is me".replace(reg,'2'); console.log(demo);
2、构造函数
var reg = new RegExp('\\bis\\b','g');//有两个\\是因为在js的字符串中\本身也是字符需要转义。第一个参数是正则表达式,第二个参数是gmi var demo = "this is me".replace(reg,'2'); console.log(demo);
二、正则符号
g:全文搜索
i:忽略大小写
m:多行搜索
^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"
$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
+ 匹配前面元字符1次或多次,/ba+/将匹配ba,baa,baaa
? 匹配前面元字符0次或1次,/ba?/将匹配b,ba
x|y 匹配x或y
{n} 精确匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
[^xyz] 不匹配这个集合中的任何一个字符
[\b] 匹配一个退格符
\b 匹配一个单词的边界
\B 匹配一个单词的非边界
\d 匹配一个字数字符,/\d/ = /[0-9]/
\D 匹配一个非字数字符,/\D/ = /[^0-9]/
\n 匹配一个换行符
\r 匹配一个回车符
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等
\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
\t 匹配一个制表符
\v 匹配一个重直制表符
\w 匹配一个可以组成单词的字符,包括下划线、数字、字母
\W 匹配一个不可以组成单词的字符
三:常用的正则例子
1、常用的15种正则表达式:http://mp.weixin.qq.com/s/W9N4Eb5LBxqEwc51gJnwgQ
其中包括用户名、密码强度、整数、数字、电子邮件地址(Email)、手机号码、身份证号、URL地址、 IPv4地址、 十六进制颜色、 日期、 QQ号码、 微信号、车牌号、中文正则。表单验证处理必备。
2、补充第一个:(固定电话)var regPhone=/^(^0\d{2}-?\d{8}$)|(^0\d{3}-?\d{7}$)|(^0\d2-?\d{8}$)|(^0\d3-?\d{7}$)$/;
/*
* 固定电话号码格式
* 因为固定电话格式比较复杂,情况比较多,主要验证了以下类型
* 如:010-12345678、0912-1234567、(010)-12345678、(0912)1234567、(010)12345678、(0912)-1234567、01012345678、09121234567
*/
3、补充第二个:(车牌号码)var express = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/;
/*常规车牌号:仅允许以汉字开头,后面可录入六个字符,由大写英文字母和阿拉伯数字组成。如:粤B12345;
*最后一个为汉字的车牌:允许以汉字开头,后面可录入六个字符,前五位字符,由大写英文字母和阿拉伯数字组成,而最后一个字符为汉字,汉字包括“挂”、“学”、“警”、“港”、“澳”。如:粤Z1234港。
*新军车牌:以两位为大写英文字母开头,后面以5位阿拉伯数字组成。如:BA12345。
*/
4、补充第三个:(经纬度)
经度: -180.0~+180.0(整数部分为0~180,必须输入1到6位小数) /^[\-\+]?(0?\d{1,2}\.\d{1,6}|1[0-7]?\d{1}\.\d{1,6}|180\.0{1,6})$/
纬度: -90.0~+90.0(整数部分为0~90,必须输入1到6位小数) /^[\-\+]?([0-8]?\d{1}\.\d{1,6}|90\.0{1,6})$/
5、补充第四个:(价格)/(^[1-9]\d*(\.\d{1,2})?$)|(^0(\.\d{1,2})?$)/