javascript正则表达式

发布时间:2023-05-23 08:00

正则表达式:一种用于匹配特殊字符的逻辑表达式。

var str = \"hello__world中HELLO __ WORLD国 - width is 100 ok!\";

var result = str.match(\"o\"); // 匹配给定的字符串,匹配到就会立刻停止。返回一个数组

// result = str.search(\"o\"); // 查询给的字符,匹配到就会返回字符所在的索引,没有就返回-1;

// match(reg),search(reg),replace(reg,\"\")可以传递一个正则表达式对象

console.log(result);

1. 要借助正则表达式对象创建正则表达式 RegExp(pattern,modifiers);

patter 正则表达式

modifiers 修饰符

g 全局匹配,把整个字符串查询完。这里会返回字符串里面所有的o字符

i 不区分大小写,不管大写字母,小写字母都可以匹配出来。

m 多行匹配,匹配多行字符串。

var patter = \"o\";

var reg = new RegExp(patter,\"gi\"); // 创建一个匹配o的正则表达式对象。匹配o的字符

var reg1 = /o/gi; // 快捷创建正则对象的方式,表达式不能用变量。

result = str.match(reg1); // 把正则表达式对象传给match,match可以按正则表达式逻辑匹配字符。

 2. 正则表达式的模式

[wo] 范围查询,查询[]里面的任何字符。 查询[]里面的w或者o

[a-z] 查询 - 之间的连续内容, 查询a-z之间的任意字符,[A-z] 可以查询所有的大小写字母,[0-9]查询所有的数字,[a-z0-9]查询所有的字母和数字

(a|b) 查询以|分隔的任意选项。可以理解为或的意思。

 [^wo] 匹配除wo以外的任意字符

var reg2 = /[a-z0-9]/gi;

var reg3 = /(hello)|(is)/gi;

var reg3a = /[^wo]/gi;

result = str.match(reg3a);

console.log(result);

3. 元字符

 \\d 匹配所有的数字

 \\D 匹配除了数字以外的任意字符

 \\w 匹配数字,字母,_

 \\W 匹配非数字,字母,_的字符

 \\s 匹配空白字符

var reg4 = /\\d/g;

var reg5 = /\\D/g;

var reg6 = /\\W/g;

var reg7 = /\\s/g;

// console.log(str.replace(reg7,\"\"));

// console.log(str.match(reg6));

 4. 匹配中文字符,一般匹配所有中文字符要去匹配中文字符对应的Unicode编码。

 u Unicode编码匹配修饰符。

var reg8 = /\\p{Unified_Ideograph}/gu;

result = str.match(reg8);

console.log(result);

 5. 量词,匹配字符出现的次数。可以开启贪婪模式(匹配符合规则最多字符)

o+ 匹配至少1个x以上的字符

o* 匹配0(包含0)个以上的字符

o? 匹配0个或者1个

{min,max} 自定义匹配数量,min是最小匹配的数量,max是最多匹配的数量

o{3} 匹配3个o,指定匹配数量

o{1,} 和+一样,1个o以上

var str1 = \"go google gooogle boold\";

var reg9 = /go{0,3}/g;

result = str1.match(reg9);

console.log(result);

6. 正则转义符,有一些特殊符号是正则表达式的语法,要匹配这些特殊符号就要用 \\转义。

var str = \"hello[]33234\";

var reg11 = /\\[\\]/g;

console.log(str.match(reg11));

7. 常用的特殊字符

 ^h 匹配字符串的开头(这里是匹配以h字符开头)。

h$ 匹配以某个字符结尾(这里就是匹配以h结尾的字符);

. 匹配任意字符,如果要匹配.,则要用转义符如: reg = /\\./g

var str3 = \" hello world.com\";

console.log(str3.match(rega));

var rega = /d$/;

用户名的规则: 必须以字母开头,长度在4-6个字符之间的字母,数字或者下划线。

var regb = /^[A-z]\\w{3,5}$/;

console.log(regb.test(\"c235b5\"));

reg = /./g;

console.log(str3.match(reg),\"点\");

8. test()方法,可以验证字符串是否符合一个正则。符合规则返回true,不符合返回false;

var regc = /ae/g;

// console.log(regc.test(str3)); // str3里面不包含ae,返回false

9. 断言(环视),预判字符的某个位置是指定的字符。

0宽断言,预判字符是否存在,但是不会显示出来

var str = \"hell1o123 helloworld hello10-\";

01. o(?=exp) 0宽度正预测(先行断言),字符o后面能发匹配表达式(如果匹配只会返回o,表达式的匹配不会返回);

匹配后面有123的o字符

var reg = /hello(?=123)/g;

var reg1 = /o(?=[A-z]+)/g; // 匹配后面紧接着字母的o

console.log(str.match(reg1));

02. o(?!exp) 0宽度负预测先行断言。o后面不挨着某个表达式的正则,不会返回断言的内容

reg = /o(?!\\d+)/g;

console.log(str.match(reg));

03. 零宽度正回顾断言 (?<=exp)

reg = /(?<=[A-z])o/g; // 匹配前面挨着字母的o,不会返回返回断言的内容。

console.log(str.match(reg));

04. 零宽度正回顾断言不匹配 (?
reg = /(?

复杂密码校验:必须包含至少包含一个数字、字母、下划线的组合,长度是3-6位置。

    /* 以字母开头,必须包含数字,字母,_(下划线)的组合,长度是6-10位。 */

    var reg = /^(?=.*[a-z])(?=.*\\d)(?=.*_)[a-z]\\w{5,9}$/gi;

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号