Javascript中的正则表达式
一、正则表达式
1、历史起源
1956年,美国新泽西、底特律的两位神经生理方面的科学家,通过数学符号的形式来描述神经系统网络模型。
肯.汤马森(UNIX之父)把正则引入到UNIX引入编辑器QED、ED、双管道命令grep
《精通正则表达式》的作者,把这种数学符号,编辑成书,并正式成为正则表达式。
2、什么是正则表达式
正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个字符串中是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
模式:正则表达式
某种:模糊查询
select * from goods where title=’联想手机’; 精确查询
select * from goods where title like ‘%联想手机%’; 模糊查询
3、应用场景
1)信息隐藏 任*遥 135****999
2)信息过滤 *** 河蟹 政府 zf 上海 sh
3)信息采集 l356o998677
4)信息检索
5) 表单验证
二、正则对象
1、创建正则对象
在Javascript中,如果要使用正则表达式,请先创建正则对象
基本语法:
var 变量=/正则表达式/匹配模式;
2、匹配模式
g:global全局匹配
i:ignore忽略大小写
三、正则表达式中的常用方法
6大常用方法
RegExp类(正则对象):
test():判断字符串是否含有指定模式的字符,bool:true、false
exec():返回字符串中是否含有指定模式的字符
String类(字符对象):
search():返回指定模式的字符在字符串出现的位置,默认从0开始
match():返回指定模式的字符串,返回数组类型
replace():通过指定模式字符进行字符串替换
split():通过指定模式字符实现对字符串的分割,返回数组类型
四、编写正则表达式
技巧:正则编写三步走:
创建正则对象
1)查什么
2)查多少
3)从哪查
1、正则表达式构成:
正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。
2、查什么(元字符——匹配符)
字符匹配符用于匹配某个或某些字符
在正则表达式通过一对方括号括起来的内容,我们称之为字符簇
l [a-z] :匹配a-z中的任一字符
l [A-Z] :匹配A-Z中的任一字符
l [0-9] :匹配0-9中的任一数字 \d
l [0-9a-z] : 匹配0-9或a-z中的任一字符
l [0-9a-zA-Z]:匹配0-9或a-z或A-Z中的任一字符
l 下划线_
l [0-9a-zA-Z_] 相当于\w
l [abcd] : 匹配字符a或字符b或字符c或字符d
l [1234]:匹配数字1或数字2或数字3或数字4
在正则表达式中的字符簇中,可以通过上档键^来取反
l [^a-z] :匹配除a-z外的任一字符
l [^0-9] :匹配除0-9外的任一字符 \D
l [^abcd] :匹配除字母abcd以外的任一字符
l \d :匹配一个数字字符 [0-9]
l \D :匹配一个非数字字符 [^0-9]
l \w :匹配包括下划线的任何单词字符 [0-9a-zA-Z_]
l \W :匹配任何非单词字符 [^\w]
l \s :匹配任何空白字符 空格、制表位等空白字符
l \S :匹配任何非空白字符 [^\s]
l . :匹配除 "\n" 之外的任何单个字符
3、查多少(元字符——限定符)
限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。
* 匹配前面的子表达式零次或多次 (0到多)
+ 匹配前面的子表达式一次或多次 (1到多)
? 匹配前面的子表达式零次或一次 (0或1)
{n} 匹配确定的 n 次
{n,} 至少匹配n 次 {4,} 最少匹配4次
{n,m} 最少匹配 n 次且最多匹配 m 次 {3,7}
| 或者的意思,例如x|y 匹配x或者y
4、从哪查(元字符——定位符)
定位符可以将一个正则表达式固定在一行的开始或结束。也可以创建只在单词内或只在单词的开始或结尾处出现的正则表达式。
匹配11位电话号
^ :上档键(开始位置)
$ :结束位置
5、特殊字符
转义符
在正则表达式中,\ 用于匹配某些特殊字符
/ + * ? ( ) [] {} . ^ $ \
五、用正则表达式举例:
//用户名由6-18位的字母数字下划线组成,不能由数字开头
var r_name=/^[a-z]\w{5,17}$/i
//密码长度不能少于六位
var r_pwd=/^\w{6,}$/
//所有的通用邮箱地址
var r_eamil=/^\w+@\w+(\.)\w+$/
//匹配一个QQ邮箱地址
//861745122@qq.com
var r_qq_email=/^\d{5,}@qq(\.)com$/
//匹配一个163的邮箱地址
var r_163_email=/^\w+@163(\.)com$/
//匹配一个后缀名可能是.com|.net|.cn|.edu
var email=/^\w+@\w+(\.)com|net|cn|edu$/
//要求输入有效的年龄段
var r_age=/^\d{1,2}$/
//if(age>=18&&age<=100)
//验证手机号:11位 13 15 18开头
var r_tel=/^1[3,5,8]\d{9}$/
//验证身份证号 18位或者17位加一个X
var r_s=/^\d{18}|\d{17}x$/i
//验证中文
var reg=/^[\u4e00-\u9fa5]{2,17}$/