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,}$/;

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐