js正则表达式

博客介绍了js正则表达式基础。包括使用构造函数RegExp()方法和字面量两种创建方式,说明了构造函数的两个参数及匹配模式,如“i”“g”。还提及常用元字符、量词,以及向正则表达式添加变量时构造函数法的必要性。最后介绍了RegExp对象的lastIndex属性及解决匹配结果异常的办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js正则表达式基础

  • 1、使用构造函数RegExp()方法创建,可以有两个参数,都是字符串形式传入,用test()方法检测是否匹配.
    第一个参数:设置正则表达式,
    第二个参数:设置匹配模式
    “i” 表示忽略大小写
    “g” 表示全局匹配,即匹配全部可匹配的结果。如果不带g,匹配成功则不再继续匹配。
var reg = new RegExp("a","i");	 /* 字符串中只要有a,就返回true,不区分大小写*/
		 var str = "Abcd";
		 var result = reg.test(str);		
		 console.log(result);							/* true */					
  • 2、直接使用字面量创建(简单方便,实际中经常用这种方式创建正则表达式,但是有一种情况必须用第一种方法,即需要向正则表达式中传入变量)
    var 变量名 = /正则表达式/匹配模式
var reg = /[a-z]/g;				/* 全局匹配所有小写字母,即只要字符串中有小写字母,调用test方法就返回true */
		var str = '1234a';
		console.log(reg.test(str));		/* true */

常用的表达式

	  		[a-z] 匹配所有小写字母
	  		[A-Z] 匹配所有大写字母
	  		[A-z] 匹配所有字母
	  		[0-9] 匹配所有数字
	 	    [^ ]  匹配除了中括号里面的东西

常用的元字符(即拥有特殊含义的字符, \表示转义字符,)

  .			表示查找单个字符      (用\.表示'.')
  \w		表示查找单词字符,包括数字,字母,下划线(\W意思与之相反,以下同理)
  \d		表示查找数字字符
  \s		表示查找空白字符,包括空格,换行符,制表符等
  \b		表示匹配单词边界 			var reg = /\bh/;	 console.log(reg.test('hello'))	/* true */

量词(当n是多个字符时,用()括起来)

在解决问题过程中可能遇到需要向正则表达式中添加变量,使用字面量创建的正则表达式传入变量会被当做正则表达式的一部分去处理,所以只能用构造函数的方法去创建

var str = 'hello';
			var reg = /str/;		/* str变量会被当做正则的一部分处理 */
			var reg = new RegExp(str,'i');
			console.log(reg.test('Hello'));			/* true */

最后介绍一下RegExp 对象(必须有全局匹配模式)一个重要的属性 :lastIndex

var reg = /[a-z]/g;
			console.log(reg.test('a123456'));			/* true */
			console.log("lastIndex="+reg.lastIndex)		/* lastIndex=1 */
			console.log(reg.test('a123456'));			/* false */
			console.log('lastIndex='+reg.lastIndex)		/* lastIndex=0 */

正则表达式设置全局匹配模式之后,可能会出现同一个正则表达式判断同一个字符串出现两次不同的结果,原因就是lastIndex,该属性存放一个整数,它声明的是上一次匹配文本之后的第一个字符的位置。

解决办法是去掉全局匹配或者匹配完之后手动设置lastIndex=0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值