平时都是复制网上正则表达式,用的都是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 的字符串。