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]+$/ |