js对象之RegExp正则表达式

RegExp对象 :正则

// 在python中如果需要使用正则 需要借助于re模块
// 在js自己手动创建需要的正则对象

第一种创建方法:
var reg = new RegExp('^[a-zA-Z][a-zA-Z0-9]{5,11}');
第二种创建方法:
var reg1 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/;

匹配内容:
关键字.test
返回结果为:布尔值

reg.test('garyiii');
reg1.test('garyiii');

match方法:
格式:.match(/正则表达式/)
//  习题:获取字符串中所有字母s
var str = 'gary asdj asdq sdff';
str.match(/s/);  // 找到一个s就停止
str.match(/s/g);  //  全局匹配,g则代表全局模式

全局模式的lastIndex属性

var reg2 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/g;

reg2.test('garysss');
true

reg2.test('garysss');
false

reg2.test('garysss');
true

reg2.test('garysss');
false

reg2.lastIndex;
0

reg2.test('garysss');
true
reg2.lastIndex;
7

不传数值 默认传的是undefined

var reg3 = /^[a-zA-Z][a-zA-Z0-9]{5,11}/;
reg3.test();  // 返回true

// 这里为什么返回为true呢 因为在什么都不传的情况下默认传的为undefined,恰好undefined符合正则,所以返回的为true

验证undefined的存在

reg4.test(undefined);  
true  // 这里还验证不出来

var reg4 = /undefined/;   //  我们创建一个精准匹配来验证
reg4.test('gary');
false
reg4.test();
true

所以我们在书写正则的时候遇到上述两种情况要知道它内部的一个原理,但是我们基本上也不到这种情况。
posted @ 2022-02-09 21:06  JasonBorn  阅读(105)  评论(0编辑  收藏  举报