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。

javascript正则匹配包含有数字和字母的_字符串

 

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));

javascript正则匹配包含有数字和字母的_正则表达式_02

 

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));

javascript正则匹配包含有数字和字母的_字符串_03

 

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));

javascript正则匹配包含有数字和字母的_字符串_04

 

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));

javascript正则匹配包含有数字和字母的_bc_05

 

7、量词的使用。检查一个字符中是否含有ababababababab,好几个重复的ab,可以用量词来简化。

var reg=/(ab){7}/
var s="ababababababab";
var s1="abab414545";
console.log(reg.test(s));
console.log(reg.test(s1));

javascript正则匹配包含有数字和字母的_正则表达式_06

量词
- 通过量词可以设置一个内容出现的次数

- 量词只对它前边的一个内容起作用

var reg=/ab{3}/
var s="abababa";
var s1="abbb";
console.log(reg.test(s));
console.log(reg.test(s1));

javascript正则匹配包含有数字和字母的_字符串_07

- {n} 正好出现n次
- {m,n} 出现m-n次
- {m,} m次以上
- + 至少一个,相当于{1,}
- * 0个或多个,相当于{0,}
- ? 0个或1个,相当于{0,1}

 

8、检查一个字符串中是否以a开头

- ^n 表示匹配以n字符开头开头

这和上边查找除什么以外的字符是不一样的。

javascript正则匹配包含有数字和字母的_正则表达式_08

javascript正则匹配包含有数字和字母的_正则表达式_09

var reg=/^n/
var s="nmmm";
var s1="mmmm";
console.log(reg.test(s));
console.log(reg.test(s1));

javascript正则匹配包含有数字和字母的_bc_10

- n$ 表示以n字符结尾

如果在正则表达式中同时使用^ $则要求字符串必须完全符合正则表达式。

 

元字符

.是元字符,有特殊含义的字符。

var reg=/./;
var s="dfdsfsd&*DFD*(";
console.log(reg.test(s));

javascript正则匹配包含有数字和字母的_字符串_11

9、检查一个字符串中是否含有 . 

那如题所述,单纯是想检测字符串中是否含有 . 这个字符呢?那么要用到转义字符\ 来表示 .让它不再具备特殊意义,就是一个普通字符。

var reg=/\./;
var s="dfd5555df.222";
 console.log(reg.test(s));

javascript正则匹配包含有数字和字母的_正则表达式_12

注意,若用构造函数创建这个正则表达式/\./,构造函数参数是字符串,所以要多加一个转义字符才行。

var reg=new  RegExp("\\.");

\w -任意字母、数字、_  [A-z0-9_]

\W - 除了字母、数字、_ [^A-z0-9_]

\d - 任意的数字  [0-9]

\D - 除了数字 [^0-9]

\s - 空格、

\S - 除了空格

\b - 单词边界、

\B - 除了单词边界