js的正则表达式的使用
·
js.正则表达式的使用
-
是一个描述字符模式的对象.
2.正则表达式创建
1.构造函数
var pattern=new RegExp('正则表达式',“修饰符”);
var pattern=new RegExp("qwer","igm")
2.字面量
var pattern=/正则表达式/修饰符;
var pattern=/qwer/igm
3.修饰符
i ignore case 不区分大小写
g g global 全局
m multiline 多行
4.实例方法
1.exec 用来匹配字符串中符合正则表达式的字符串
参数:字符串
返回值:匹配到,返回result数组,匹配不到返回null
[匹配的内容,index: 在str中匹配的起始位置,input: 参数字符串,groups: undefined]
实例:
var reg1=/hello/ig;
var str='你好世界 HELLO world';
console.log(reg1.lastIndex);
console.log(reg1.exec(str))
2.test 校验检测的字符串是否可以匹配到正则表达式字符串,匹配到返回true,否则返回false
var reg1=/hello/ig;
var str='你好世界 HELLO world';
console.log(reg1.lastIndex);
console.log(reg1.exec(str))
5.正则表达式g修饰符
匹配模式中的如果有g,全局匹配,会维护一个lastIndex属性代表下次开始查找的位置。如果没有g修饰,lastIndex永远为0。
实例
var reg1=/\d{3}/ //匹配0-9之间的数值三次
var str='135246789';
console.log(reg1.exec(str))
6.正则表达式对象的属性
var pattern = /\d{3}/img;
pattern.exec(); 查找
pattern.test(); 测试
pattern.toString(); 转换为字符串
pattern.valueOf(); 返回字符串本身
pattern.source; 正则表达式文本
pattern.global 布尔值,表明这个正则表达式是否带有修饰符g
pattern.ignoreCase 布尔值,表明这个正则表达式是否带有修饰符i
pattern.multiline 布尔值,表明这个正则表达式是否带有修饰符m
pattern.lastIndex 如果匹配模式带有g,这个属性存储在整个字符串中下一次检索的开始位置,这个属性会被exec(), test()方法调用到
7. 正则表达式语法
1.直接量字符
\t 制表符
\n 换行符
\v 垂直制表符
\f 换页符
\r 回车符
2.字符集合
.匹配除换行符\n和回车符之外的任何单个字符,等效于[^\n\r]
/[a-zA-Z0-9]/
/[^a-zA-Z0-9]/
/\w/ => /[a-zA-Z0-9_]/
/\W/ => /[^a-zA-Z0-9_]/
/\d/ => /[0-9]/
/\D/ => /[^0-9]/
/\s/ => [\n\t空格]
/\S/ => [^\n\t空格]
实例1
var reg1=/.../;
var str='hello.';
console.log(reg1.exec(str));
实例2
var reg2=/\w\d/;
var str='hello123';
console.log(reg2.exec(str));
实例3
var reg3=/[hello]/;
var str='hello';
console.log(reg3.exec(str));
实例4
var reg4=/[1hello]/;
var str='hello123';
console.log(reg4.exec(str));
实例5--贪婪模式
var reg5=/\d[a-z]*/igm;
var str='1ab2cdefg3'
console.log(reg5.exec(str))
实例6--非贪婪模式
var reg5=/\d[a-z]*?/igm;
var str='1ab2cdefg3'
console.log(reg5.exec(str))
实例7 |代表或者的关系
var pattern=/hello2|1/img;
var str='hello1abc2';
console.log(pattern.exec(str))
实例8 ()代表分组
var reg6=/hello(2|1)/g;
var str='hello1abc2hello2'
console.log(reg6.exec(str))
console.log(reg6.exec(str))
8.分组
1.在同一正则表达式后面引用前面的子表达式。
\1 引用第一个带圆括号的子表达式
var reg1=/(\w)\w\w\1/;
var str='helloabca2002';
console.log(reg1.exec(str))
9.String对正则表达式的支持
1.search 查找字符串中是否有匹配正则的字符串,有则返回字符串第一次出现时的位置,否则返回-1
var reg=/\d{2,}/img;
var str='hello1world';
console.log(str.search(reg))
2.match 返回由匹配结果组成的数组或者null。当正则表达式中没有g修饰符的时候,就不是全局匹配。
var reg=/\w{2}/g;
var str='hello1world';
console.log(str.match(reg));
3.replace() 替换操作。第一个参数是正则表达式,第二个参数是要替换的字符串。返回替换后的字符串
var str='hello1world';
var result=str.replace(/o/,'e');
console.log(result)
4.split() 切割 将字符串转换为数组。参数可以是正则表达式
var str='1004&1005&1006&1007&1008';
var result=str.split('&')
console.log(result)
var result=str.split(/&/);
var result=str.split(/\s*&\s*/)
将hello字符串切割为['h','e','l','l','o'];
str.split("")
10.前瞻
正则表达式从文本头部向尾部解析,文本尾部方向称为前
正向前瞻 (?=exp)匹配后面满足exp表达式的位置
var str='a2*34v8';
var result=str.replace(/\w(?=\d)/g,'X');
console.log(result);
负向前瞻 (?!exp) 匹配后面不满足exp表达式的位置
var str='a2*34v8';
var result=str.replace(/\w(?!\d)/g,'X');//[0-9a-zA-z_]
console.log(result)
密码验证
匹配密码,必须包含大写,小写和数字,和特殊字符(!,@,#,%,&),且大于6位
var reg=/(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.[!|@|#|%|&])^([0-9a-zA-Z!@#%&]){6,}$/;
更多推荐
所有评论(0)