JavaScript中的正则表达式

  • 元字符
    • 在正则表达式中被赋予特殊含义的字符,不能被直接当做普通字符使用。如果要匹配元字符本身,需要对元字符进行转义,转义的方式是在元字符前面加上“\”,例如:\^
    • 常用元字符

代码

说明

.

匹配除换行符以外的任意字符

\w

匹配字母或数字或下划线等价于[a-zA-Z0-9]

\W

匹配任何非单词字符。等价于[^A-Za-z0-9_]

\s

匹配任意的空白符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。

\S

匹配任何非空白字符。等价于[^\f\n\r\t\v]。

\d

匹配数字。等价于[0-9]。

\D

匹配一个非数字字符。等价于[^0-9]

\b

匹配单词的开始或结束

^

匹配字符串的开始,但在[]中使用表示取反

$

匹配字符串的结束

 

var str = 'one two three four';

//匹配全部空格

var reg = /\s/g;

//将空格替换为@

var newStr = str.replace(reg,'@');//one@two@three@four

document.write("newStr="+newStr);

 

var str = '今年是2014年';

//匹配至少一个数字

var reg = /\d+/g;

str = str.replace(reg,'abcd');

document.write('str='+str);//今年是abcd年

 

var str01 = 'I love Java';

var str02 = 'Java love me';

//匹配以Java开头

var reg = /^Java/g;

document.write('reg.test(str01)='+reg.test(str01));//flase

document.write("<br />");

document.write('reg.test(str02)='+reg.test(str02));//true

 

var str01 = 'I love Java';

var str02 = 'Java love me';

//匹配以Java结尾

var reg = /Java$/g;

document.write('reg.test(str01)='+reg.test(str01));//true

document.write("<br />");

document.write('reg.test(str02)='+reg.test(str02));//flase

 

  • 字符集合:[]

代码

说明

[xyz]

字符集合。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。

[^xyz]

负值字符集合。匹配未包含的任意字符。例如,“[^abc]”可以匹配“plain”中的“p”。

[a-z]

字符范围。匹配指定范围内的任意字符。例如,“[a-z]”可以匹配“a”到“z”范围内的任意小写字母字符。

[^a-z]

负值字符范围。匹配任何不在指定范围内的任意字符。例如,“[^a-z]”可以匹配任何不在“a”到“z”范围内的任意字符。

 

var str01 = 'Hello World';

var str02 = 'I am Tom';

//匹配abc中的任何一个

var reg = /[abc]/g;

document.write('reg.test(str01)='+reg.test(str01));//flase

document.write("<br />");

document.write('reg.test(str02)='+reg.test(str02));//true

 

  • 重复

代码

说明

*

重复零次或更多次

+

重复一次或更多次

?

重复零次或一次

{n}

重复n次

{n,}

重复n次或更多次

{n,m}

重复n到m次

 

document

.write("/[a]{3}/.test('aa')="+/[a]{3}/g.test('aa'));//flase

document.write("<br />");

document

.write("/[a]{3}/.test('aaa')="+/[a]{3}/g.test('aaa'));//true

document.write("<br />");

document .write("/[a]{3}/.test('aaaa')="+/[a]{3}/g.test('aaaa'));//true

 

  • 在正则表达式中表示“或者”:|

//目标字符串

var str01 = 'Hello World!';

var str02 = 'I love Java';

//匹配'World'或'Java'

var reg = /World|Java/g;

document.write("str01.match(reg)[0]="+str01.match(reg)[0]);//World

document.write("<br />");

document.write("str02.match(reg)[0]="+str02.match(reg)[0]);//Java

 

 

  • 常用正则表达式

用户名

/^[a-zA-Z_][a-zA-Z_\-0-9]{6,10}$/

密码

/^[a-zA-Z0-9_\-\@\#\&\*]{6,12}$/

前后空格

/^\s+|\s+$/g

电子邮箱

/^[a-zA-Z0-9_\.-]+@([a-zA-Z0-9-]+[\.]{1})+[a-zA-Z]+$/