JavaScript 正则表达式的使用
正则表达式的使用
先说RegExp对象的一个方法
test()
- 使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false。
1、用正则表达式来检查一个字符串中是否含有字母a
var reg = new RegExp("a");
var s="abcdef";
console.log(reg.test(s));
创建了一个RegExp对象reg,匹配规则是含有字母a,匹配模式没写,然后创建一个字符串s,reg调用方法test()检查是否符合匹配规则。s字符串中含有字母a,所以返回true。
2、用正则表达式来检查一个字符串中是否含有字母A,大写的A该怎么办呢?匹配模式设置为"i",对大小写不敏感。无论是大小写,含有a就行。
var reg = new RegExp("a","i");
var s="abcdef";
var s1="A2dffdf";
var s2="fgjdhgfd";
console.log(reg.test(s));
console.log(reg.test(s1));
console.log(reg.test(s2));
3、 创建一个正则表达式,检查一个字符串中是否有a或b
var reg = /a|b/; //这里使用直接量方式创建了一个正则表达式 var reg=/正则表达式/匹配模式
var s="abcd";
var s1="acd";
var s2="bcd";
var s3="cdef";
console.log(reg.test(s));
console.log(reg.test(s1));
console.log(reg.test(s2));
console.log(reg.test(s3));
4、 创建一个正则表达式检查一个字符串中是否有字母。26个字母,不可能 a|b|c|d|e.......这样写吧。这里可以使用[],[ab]其实和a|b的意思一样,就是含有a或b之中的一个。所以26个字母就[abcdefghi......],当然不会这么写。答案是[a-z],表示字母a到z。所以有一些结论:
[a-z] 任意小写字母
[A-Z] 任意大写字母
[A-z] 任意字母
[0-9] 任意数字
var reg=/[A-z]/
var s="a12356654";
var s1="4545552";
console.log(reg.test(s));
console.log(reg.test(s1));
5、检查一个字符串中是否含有 abc 或 adc 或 aec。
答案:reg = /a[bde]c/;
6、检查一个字符串是否含有ab字母以外的字符。
var reg=/[^ab]/;
var s="ab";
var s1="123";
var s2="ab123";
console.log(reg.test(s));
console.log(reg.test(s1));
console.log(reg.test(s2));
7、量词的使用。检查一个字符中是否含有ababababababab,好几个重复的ab,可以用量词来简化。
var reg=/(ab){7}/
var s="ababababababab";
var s1="abab414545";
console.log(reg.test(s));
console.log(reg.test(s1));
量词
- 通过量词可以设置一个内容出现的次数
- 量词只对它前边的一个内容起作用
var reg=/ab{3}/
var s="abababa";
var s1="abbb";
console.log(reg.test(s));
console.log(reg.test(s1));
- {n} 正好出现n次
- {m,n} 出现m-n次
- {m,} m次以上
- + 至少一个,相当于{1,}
- * 0个或多个,相当于{0,}
- ? 0个或1个,相当于{0,1}
8、检查一个字符串中是否以a开头
- ^n 表示匹配以n字符开头开头
这和上边查找除什么以外的字符是不一样的。
var reg=/^n/
var s="nmmm";
var s1="mmmm";
console.log(reg.test(s));
console.log(reg.test(s1));
- n$ 表示以n字符结尾
如果在正则表达式中同时使用^ $则要求字符串必须完全符合正则表达式。
元字符
.是元字符,有特殊含义的字符。
var reg=/./;
var s="dfdsfsd&*DFD*(";
console.log(reg.test(s));
9、检查一个字符串中是否含有 .
那如题所述,单纯是想检测字符串中是否含有 . 这个字符呢?那么要用到转义字符\ 来表示 .让它不再具备特殊意义,就是一个普通字符。
var reg=/\./;
var s="dfd5555df.222";
console.log(reg.test(s));
注意,若用构造函数创建这个正则表达式/\./,构造函数参数是字符串,所以要多加一个转义字符才行。
var reg=new RegExp("\\.");
\w -任意字母、数字、_ [A-z0-9_]
\W - 除了字母、数字、_ [^A-z0-9_]
\d - 任意的数字 [0-9]
\D - 除了数字 [^0-9]
\s - 空格、
\S - 除了空格
\b - 单词边界、
\B - 除了单词边界