正则表达式

在这里插入图片描述
定义正则表达式:
方法包括:构造法和直接量
1.构造正则表达式
RegExp构造函数定义正则表达式:
new RegExp(pattern,attributes);

pattern:字符串–>指定了正则表达式的模式或其他正则表达式,
attributes:是一个可选的修饰符标志,包含’g’、‘i’、'm’分别用于指定全局匹配、区分大小写的匹配和多行匹配。
注意:
如果pattern是正则表达式,而不是字符串,则必须省略该参数。
该函数将返回一个新的RegExp对象,具有指定的模式和标志。

var regex=new RegExp(/表达式/);
//或者
var regex=new RegExp("表达式");

Demo1:

var r=new RegExp('a'); //构造最简单的正则表达式 匹配模式为字符a
var s="javascript!=java";//字符串直接量
var a=s.match(r);//返回['a']
console.log(a);
console.log(a.index);

如果希望匹配字符串中的所有字符a,且不区分大小写,则可以在第二个参数中增加g和i修饰符.

var r=new RegExp('a','gi'); 

2.正则表达式直接量:
使用双斜杠作为分隔符进行定义,双斜杠之间包含的字符为正则表达式的字符模式,字符模式不能使用引号,标志字符放在最后一个斜杠的后面。
/patten/attributes

如:

var r=/\b\w/gi;//匹配单词的边界,不区分大小写
var s="javascript JAVA";
var a=s.match(r);
console.log(a);//返回数组 ["j","J"]

JavaScript正则表达式支持"g"、“i”、“m” 这3个标志修饰符.

“g”:global(全局)的缩写,定义全局匹配,即正则表达式将在指定的字符串范围内执行所有匹配
“i”:定义不区分大小写的匹配,即对于字母大小写视为等同。
“m”:multiline的缩写,定义多行字符串匹配。

正则表达式的组成:
在这里插入图片描述
边界符:
边界就是确定匹配模式的位置,如字符串的头部或尾部。

	量词								说明
	  ^								匹配开头,在多行检测中,会匹配一行的开头
	  $								匹配结尾,在多行检测中,会匹配一行的结尾

Demo:

   // '^':匹配行首开始(以什么开头)
        var reg=/^123/;//匹配以123开头的字符
        console.log(reg.test("hrusj123"));
        console.log(reg.test("123saaiu"));

        var str="123str8956";
        str=str.replace(reg,'');
        console.log(str);

        //'$':匹配行尾结束(以什么结束)
        var text="baidu.com";
        var r=/.com$/;//以'.com'结尾
        var name=text.replace(r,'');
        console.log("name:"+name);

        var singleRegex=/^demo$/;//精确匹配,表示匹配的数据是单独存在的 demo字符串才符合规范
        console.log(singleRegex.test("demotest"));//false
        console.log(singleRegex.test("testdemotest"));//false
        console.log(singleRegex.test("demotest"));//false
        console.log(singleRegex.test("demo"));//true

重复类量词:

	量词									描述
	n+								 匹配任何包含至少一个n的字符串
	n*								 匹配任何包含零个或多个n的字符串
	n?							 	 匹配任何包含零个或一个n的字符串
	n{x}							 匹配包含x个n的序列的字符串
	n{x,y}						     匹配包含x或y个n的序列的字符串
	n{x,}							 匹配至少包含x个n的序列的字符串

在这里插入图片描述

Demo:

		var rgx1=/^a$/;
	     console.log(rgx1.test('a'));
        console.log('-----------------------------2');
        //'*': 出现次数:>=0次
        var rgx2=/^a*$/;
        console.log(rgx2.test(''));
        console.log(rgx2.test('a'));
        console.log(rgx2.test('aaaaa'));

        console.log('-----------------------------3');
        //'+'号:出现次数>=1 次
        var rgx3=/^a+$/;
        console.log(rgx3.test(''));
        console.log(rgx3.test('a'));
        console.log(rgx3.test('aa'));
        console.log(rgx3.test('aaaaa'));

        console.log('-----------------------------4');
        //‘?’ 号:出现0次或1次
        var rgx4=/^a?$/;
        console.log(rgx4.test(''));
        console.log(rgx4.test('a'));
        console.log(rgx4.test('aa'));
        console.log(rgx4.test('aaaaa'));

        console.log('-----------------------------5');
        //{n}:要出现n次
        var rgx5=/^a{3}$/;
        console.log(rgx5.test('a'));
        console.log(rgx5.test('aa'));
        console.log(rgx5.test('aaaaa'));

        console.log('-----------------------------6');
        //{n,}:要出现>=n次
        var rgx6=/^a{3,}$/;
        console.log(rgx6.test('a'));
        console.log(rgx6.test('aa'));
        console.log(rgx6.test('aaa'));
        console.log(rgx6.test('aaaaa'));


        console.log('-----------------------------6');
        //{n,m}:要出现 n~m次
        var rgx6=/^a{3,16}$/;
        console.log(rgx6.test('aa'));
        console.log(rgx6.test('aaa'));
        console.log(rgx6.test('aaaaaa'));
        console.log(rgx6.test('aaaaaaaaaaaaaaa'));
        console.log(rgx6.test('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'));

Demo 3:

//量词是用来限定某种模式出现的次数
 var regex=/^[a-zA-Z0-9_-]{6,16}$/;//这个模式只能出现大小写英文字母、数字、下划线、短横线
 //添加量词符{n,m},可以指定组合匹配的出现次数
 console.log(regex.test('a'));
 console.log(regex.test('jia5'));
 console.log(regex.test('jiao7060158'));

预定义类:
在这里插入图片描述
Demo:

var regex1=/^\d{3,9}$/;
var regex2=/^\w{6,16}$/;
var spaceRegex=/\s/;//匹配空格
console.log(spaceRegex.test('test'));
//去掉字符串中的所有空格
var strData="  you are my super star!  yes! so nice     ";
console.log(strData.replace(/(^\s*)|(\s*$)/g,'').replace(/\s/g,''));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值