正则表达式

正则表达式

定义:正则,就是某种规则、要求

 正则属性:设置条件,如:是匹配一个还是匹配多个

 创建正则的两种方法:

1、直接量/字面量,g代表多次匹配,就是匹配到所有符合条件的

  /这里写自己要查找的内容/,如下: /flower/

  var reg1 = /flower/g;

2、对象

var reg2 = new RegExp("flower","");

var str = "hello i'm like flower,she is cui flower";

str.match(reg1);

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

备注: 字符串的replace支持正则,/g可以替换所有的flower

console.log(str.replace(reg1,"hua"));




正则中的元字符

 \d 代表的是数字,两个 \d 就代表匹配两个连续的数字

var reg3 = /\d\d/g;

var str3 = "hk45m65j[]=-424.7Dadsj,."

str3.match(reg3);

console.log(str3.match(reg3));//结果为:["45","65","42"]


 \w 单词字符  数字 字母  下划线

var reg4 = /\w/g;

var str4 = "hk45m65j[]=-424.7Dads_j,."

str4.match(reg4);

console.log(str4.match(reg4));


\s 匹配空白字符(包括空格、换行符、\t)

var reg5 = /\s/g;

var str5 = "hk55m\n65j []=-525.7Dads_j,.\t"

str5.match(reg5);

console.log(str5.match(reg5));


 \n 代表的就是换行符

var reg6 = /\n/g;

var str6 = "hk66m\n66j []=-626.7Dads_j,.\t"

str6.match(reg6);

console.log(str6.match(reg6));


. 查找单个字符,除了换行符

var reg7 = /./g;

var str7 = "hk77m\n77j []=-727.7Dads_j,.\t哈哈\0"

str7.match(reg7);

console.log(str7.match(reg7));


 \b 匹配单词边界(单词分割的地方),找到的就是单独的\b包裹的单词,所以找到的结果为空

// var reg8 = /\bbox\b/g;查找box这个单词

// var reg8 = /\bbox/g;以box开头的单词

// var reg8 = /box\b/g;以box结尾的单词

var reg8 = /\bbox\b/g;

var str8 = "item bigbox red";

str8.match(reg8);

console.log(str8.match(reg8));


\u 匹配汉字

var reg9 = /[\u4e00-\u9fa5]/g;

var str9 = "item bigbox red 哈哈哈哈kkK hah 哈辉"

str9.match(reg9);

console.log(str9.match(reg9));


 量词

// 如果符合条件,尽可能向数量多的去匹配

// n+  匹配至少包含一个n的字符

var reg10 = /5+/g;

var str10 = "sdfj555njkh784564hjk453oj4"

str10.match(reg10);

console.log(str10.match(reg10));

// n*  匹配包含零个或多个n的字符

var reg11 = /5*/g;

var str11 = "sdfj555njkh784564hjk453oj4"

str11.match(reg11);

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

// n?  匹配包含零个或一个n的字符

var reg12 = /5?/g;

var str12 = "sdfj555njkh784564hjk453oj4"

str12.match(reg12);

console.log(str12.match(reg12));

// n{x} x个n

var reg13 = /5{2}/g;

var str13 = "sdfj555njkh784564hjk453oj4"

str13.match(reg13);

console.log(str13.match(reg13));

// n{x,y} x到y个n,至少x个,至多y个,x必须<=y

var reg14 = /5{1,3}/g;

var str14 = "sdfj555njkh784564hjk453oj4"

str14.match(reg14);

console.log(str14.match(reg14));

// ^x  作为字符串开头的x

// x$  作为字符串结尾的x

// [123],可以是1或2或3的任意单个字符

// [^123],匹配除了123以外的任意字符

// [1-5],代表1到5之间的任意数字

// 结果为:["1", "3", "2", "1", "3", "2", "1", "2", "3"]

var reg15 = /[^123]/g;

var str15 = "4657984651321321230456";

str15.match(reg15);

console.log(str15.match(reg15));

// 匹配

// 匹配有特殊含义的字符的时候要加反斜杠

// 括号代表一个整体,占一位,"|"代表或者,这里找到3或者5

var reg16 = /(3|5)/g;

var str16 = "qwqe]13456489";

str16.match(reg16);

console.log(str16.match(reg16));


练习: 手机号码

// 11位,纯数字,1开头

// 没有12……

var reg17 = /^1[13-9]\d{9}$/g;//以11位数开头,11位数结尾

// var reg17 = /^1(3[0-35-9]|5[49])\d{8}$/g;

var str17 = "18888888888";

str17.match(reg17);

console.log(str17.match(reg17));

// 正则调用test方法,而不是字符串调用

console.log(reg17.test(str17));

练习: 邮箱的正则

// 必须6-18位,必须有至少各有一个大写字母、小写字母、数字的组合

var str18 = "12345Aa,";

function t(str) {

var rega = /^[\w\.\?\*,]{6,18}$/g.test(str);

var x = str.search(/[a-z]/);

var y = str.search(/[A-Z]/);

var z = str.search(/[0-9]/);

return rega && (x !=-1)&&(y!=-1)&&(z!=-1);

}

console.log(t(str18));


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值