之前创建正则表达式的方式有点麻烦,有简单的方式。
用字面量来创建正则表达式
语法:var 变量 = /正则表达式/匹配模式
<script>
var reg = /a/i;
var reg2 =/a/g;
var str = "a";
var str2 = "A";
console.log(reg.test(str));
console.log(reg.test(str2));
console.log(reg2.test(str));
console.log(reg2.test(str2));
</script>
用构造函数创建的比较灵活,可以传递变量
用字面量则简单。所以各有利弊。
检查一个字符串中是否有a或b
两种写法。
<script>
var reg = /a|b/;
var str = "a";
var str2 = "b";
console.log(reg.test(str));
console.log(reg.test(str2));
</script>
<script>
var reg = /[ab]/;
var str = "a";
var str2 = "b";
console.log(reg.test(str));
console.log(reg.test(str2));
</script>
检查是否有字母
<script>
var reg = /[a-z]/;
var str = "a";
var str2 = "g";
var str3 = "G";
console.log(reg.test(str));
console.log(reg.test(str2));
console.log(reg.test(str3));
</script>
这里由于我没有写匹配模式,所以区分大小写。
如何做到不用匹配模式来实现不区分大小写?
<script>
var reg = /[A-z]/;
var str = "a";
var str2 = "g";
var str3 = "G";
console.log(reg.test(str));
console.log(reg.test(str2));
console.log(reg.test(str3));
</script>
注意:这里实际上有毛病,因为这么写的作用是检查是否有A到z这段unicode编码的字符。差一些编码表发现,A到Z和a到z之间有一些其他的字符。所以如果字符串有这些其他的字符,也是会返回true的。
所以还是用匹配模式把。
检查是否有abc或adc或aec
var reg = /abc|adc|aec/;
var str = "abc";
var str2 = "adc";
var str3 = "aaa";
console.log(reg.test(str));
console.log(reg.test(str2));
console.log(reg.test(str3));
不方便,如何改进?
var reg = /a[bde]c/;
检查是否有除了a的字母
<script>
var reg = /[^a]/;
var str = "a";
var str2 = "dc";
var str3 = "e";
console.log(reg.test(str));
console.log(reg.test(str2));
console.log(reg.test(str3));
</script>
检查是否有除了数字的字符
<script>
var reg = /[^0-9]/;
var str = "a";
var str2 = "12";
var str3 = "ea12";
console.log(reg.test(str));
console.log(reg.test(str2));
console.log(reg.test(str3));
</script>