Js正则表达式遇到的坑

平时都是复制网上正则表达式,用的都是var reg = /^(\d{1,2}|100)$/;

今天复制到一段正则用:var reg = new RegExp('^([-]{0,1}\d{0,2}[0]{0,1})$'); 结果蛋疼,怎么都不通过,正则表达式测试都是正确的,结果是RegExp搞的鬼!!!

结果入坑了,如下例子:

<html>
	<head></head>
	<body>
		<script>
			//var reg = new RegExp('^([-]{0,1}\d{0,2}[0]{0,1})$'); //错误表达式\d需要字符转义,前面需要加\
			//var reg = /^(\d{1,2}|100)$/;
			var reg = new RegExp('^([-]{0,1}\\d{0,2}[0]{0,1})$');
			var testNum = -13.3;
			var flag = reg.test(testNum);
			console.log(flag);
			if(flag){
				alert("验证通过");
			}else{
				alert("验证不通过");
			}
		
		</script>
	</body>
</html>

 下面两种构建正则表达对象都是可以的,但是表达式需要注意

var re = new RegExp("\\w+");
var re = /\w+/;

注意:当使用构造函数创造正则对象时,需要常规的字符转义规则(在前面加反斜杠 \)。

 

复习下常用的正则表达式相关术语:

1.修饰符

i 说明大小写不敏感匹配

g 查找所有匹配而非在找到第一个匹配后停止

m 多行匹配

2.方括号[],方括号用于查找某个范围内的字符,例如

[abc] -查找方括号之间的任何字符。

[^abc]-查找任何不在方括号之间的字符

3.元字符(\d,\D,\s,S等)

4.量词

例如:

n+ -匹配任何包含至少一个 n 的字符串。

n* -匹配任何包含零个或多个 n 的字符串。

n? -匹配任何包含零个或一个 n 的字符串。

学习资料:https://javascript.ruanyifeng.com/stdlib/regexp.html

学习资料:https://www.runoob.com/jsref/jsref-obj-regexp.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值