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
    评论
JavaScript正则表达式和Java正则表达式在语法上有一些差异,但是它们的基本概念和用法是相似的。下面是将JavaScript正则表达式转换为Java正则表达式的一些常见规则: 1. 语法差异: - JavaScript正则表达式使用斜杠(/)作为定界符,而Java正则表达式使用双引号(")作为定界符。 - JavaScript正则表达式的特殊字符需要进行转义,而Java正则表达式的特殊字符不需要转义。 2. 字符类: - JavaScript正则表达式的字符类使用方括号([])表示,而Java正则表达式使用方括号([])或者Unicode转义(\p{...})表示。 - JavaScript正则表达式的字符类可以使用连字符(-)表示范围,而Java正则表达式需要使用Unicode转义(\uXXXX)表示范围。 3. 量词: - JavaScript正则表达式的量词使用花括号({})表示,而Java正则表达式使用花括号({})或者问号(?)表示。 - JavaScript正则表达式的贪婪量词默认是贪婪模式,而Java正则表达式的贪婪量词需要在后面添加问号(?)来表示非贪婪模式。 4. 边界匹配: - JavaScript正则表达式的边界匹配使用插入符号(^)和美元符号($)表示,而Java正则表达式使用\A和\Z表示。 5. 其他差异: - JavaScript正则表达式的捕获组使用圆括号(())表示,而Java正则表达式使用圆括号(())或者方括号([])表示。 - JavaScript正则表达式的反向引用使用反斜杠加数字(\1、\2等)表示,而Java正则表达式使用美元符号加数字($1、$2等)表示。 以上是一些常见的JavaScript正则表达式转换为Java正则表达式的规则。具体转换时,还需要根据具体的正则表达式进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值