正则表达式学习(一)

正则表达式:
admin
admin@atguigu.com
语法:
var 变量=new RegExp(“正则表达式”,“匹配模式”);
使用typeof 检查正则对象,会返回object

var reg=new RegExp(“a”);
console.log(reg);
console.log(typeof reg);
输出的是
“/a/”
“object”

正则表达式的方法
test();
使用这个方法可以用来检查一个字符串是否符合正则表达式的规则
如果符合的话返回true
否则的话返回false;

var reg=new RegExp(“a”);
var str=“a”;
var result=reg.test(str);
console.log(result);

运行的结果输出的是true;

也就是var reg=new RegExp(“a”);这个正则表达式可以用来检查一个字符串中是否含有a

var reg=new RegExp(“a”);
console.log(reg.test(”bcba“));
这样返回的就是true;因为含有a;,只要有a 就行,不在乎是开头还是结尾,严格区分大小写

注意:在构造函数中可以传递一个匹配模式来作为第二个参数
i 代表忽略大小写
g 全局匹配模式

var reg=new RegExp(“a”,“i”);
console.log(reg.test(“Abcbc”));

这个时候输出的就是true;
因为代表的是忽略大小写

使用字面量来创建正则表达式
语法:
var 变量=/正则表达式/匹配模式

使用字面量的方式创建更加简单
但是使用构造函数创建更加灵活

reg=/a/i;
console.log(typeof reg);
console.log(reg.test(“abc”));
输出的是"object"
“true”;

创建一个正则表达式
检查一个字符串中是否含有a 或者b;

reg=/a | b /;(就是有a 或者b)
console.log(reg.test(“bcd”));
这个时候输出的就是"true";

创建一个正则表达式中去检查是否有字母的
注意中括号里面的内容也是或的关系
[ab]==a|b;

reg=/[ab]/
所以说reg=/[abcdefghijklmn]/
console.log(reg.test(“h”));
这个时候输出的应该是"true";

这个时候更加灵活的写法应该是
[a-z]表示的是任意的小写字母
reg=/[a-z]/

console.log(reg.test(“h”));//true;
console.log(reg.test(“i”));//true;

这个时候若reg=/[a-z]/
console.log(reg.test(“A”));
这个时候输出的就应当是false;(因为支持的是小写字母)

reg=/[A-Z]/i;
console.log(reg.test(“b”));
这个时候应当输出的就应是 true;(因为忽略额大小写)

所以总结一下:
【】里 的关系也是或的关系、
[ab]==a|b
[a-z]任意小写字母
[A-Z] 任意大写字母
[A-z]任意字母

【0-9】表示的是任意的数字

检查一个字符串中是否有abc或者adc或者aec
var reg=/abc|adc|aec/
console.log(reg.test(“afc”));//输出的是false;
这个时候要是想要简单的去写的话
直接reg=/a[bde]c/

reg=/【ab】/;
console.log(reg.test(“b”));//true;

[^]代表的意思就是除了

这个时候若
var reg=/[^a b] /;
console.log(reg.test(“c”));
这个时候输出的就是true;(意思就是除了ab)

这时候会碰到下面一种情况就是
var reg=/[^ab]/;
console.log(reg.test(“abc”));//因为他有除了ab 以外的c
这个时候输出的就是true;

var reg=/[0-9]/;
console.log(reg.test(“123”));//true;

var reg=/[^0-9]/;
console.log(reg.test(“123456”));
这个时候输出的就是false;
因为除了数字以外;

字符串和正则相关的语法

var str=“1a3b3c4d5e6f”;
split ():
可以将一个字符串拆分成为一个数组

但是这里需要注意一点就是split()这个方法即使不指定全局匹配,也都会都拆分

var result=str.split(“c”);
console.log(result.length);
输出"2"

var str=“1a3b3c4d5e6f7”
var result=str.split(/[A-z]/);
这个时候输出的就是
1,2,3,4,5,6,7

方法中可以传递一个正则表达式作为参数
这样方法将会根据正则表达式取拆分字符串

var str=“1a2b3c4d5e6f7”;
var result=str.split(/[A-z]);
console.log(result);
输出的就是
“1,2,3,4,5,6,7”

search 可以搜索字符串中是否含有指定内容
如果搜索到了指定内容,则会返回第一次出现 的索引,否则没有搜索到的话则会返回-1

但是需要注意的就是
search()只会查找第一个,即使设置全局匹配也没用

str=“hello abc hello abc”;
result=str.search(“abcd”);//结果输出-1

str=“hello abc hello abc”;
result=str.search(“abc”);
这个时候输出的就是6
因为a 的索引就是6(索引是从0开始的)

它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串

搜索字符串中是否含有abc 或者aec 或者afc;
str=“hello abc hello aec afc”;
result=str.search(/a[bef]c/);
console.log(result);
这个时候输出的就是6;
若是result=str.search(/a[bef]c/g);
输出的也还会是6;(全局g不起作用)

match():可以根据正则表达式,从一个字符串中将符合条件的内容提取出来

默认情况下我们的match 只会找到第一个符合要求的内容,找到以后就停止检索

我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容

match() 会将匹配到的内容封装到一个数组中返回,及时只查询到一个结果

str=“1a3b3c4d5e6f7”;
result=str.match(/[A-z]/);
console.log(result);
这个时候输出的a

同样式上面的这个例子:
我们只需要
result=str.match(/A-z/g);//匹配的就是全局模式
console.log(result);
consolr.log(result[0]);
console.log(result[1]);
这个时候输出的就是
a,b,c,d,e,f
a
b

同样的再改一下:
atr=“1a2b3c4d5e6f7A8B8C”;
result=str.match(/【a-z】/ g);//没让他获得到大写字母
console.log(result);
这个时候输出的就是
a,b,c,d,e,f

可以为一个正则表达式设置多个匹配模式,切顺序无所谓

str=“1a2b3c4d5e6f7A8B9C”;
result=str.match(/[a-z]/gi);
console.log(result);
console.log(result);
console.log(Array.isArray(result));
这个时候输出的就是
a,b,c,d,e,f,A,B,C
object
true;

replace ()替换:
可以将字符串的到指定内容替换成为新的内容

参数:
1.被替换的内容,可以接受一个正则表达式作为参数
2.新的内容

默认只会替换一个

result=str.replace(“a”,"@@");
console.log(result);
输出的就是
”1@
@2b3c4d5e6f7A8B9C“

例如
result=str.replace(/[a-z]/gi,"@_@");
console.log(result);
要是我这个字符串中我只想要数字的话我可以使用空串来替换字母
result=str.replace(/[a-z]/gi,"");//输出123456789

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值