声明正则
new RegExp()
var reg = new RegExp(/表达式/) ;
字面量
var reg = /表达式/ ;
test()检测验证内容
//被检测内容必须完整包含abc
var reg = /abc/ ;
var bl = reg.test("ab") ;
var bl1 = reg.test("abc") ;
var bl2 = reg.test("abcd") ;
var bl3 = reg.test("abrc") ;
console.log( bl ) ; //false
console.log( bl1 ) ; //true
console.log( bl2 ) ; //true
console.log( bl3 ) ; //false
正则内部类
预定义类
. 除了换行和回车之外的任意字符
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>regExp</title>
</head>
<body>
<textarea id="ipt" cols="30" rows="10"></textarea>
<script>
var ipt = document.getElementById('ipt') ;
ipt.onblur = function(){
//匹配除了回车和换行的任意字符,一定要有一个字符
console.log( /^.+$/.test(this.value) ) ;
} ;
</script>
</body>
</html>
\d 数字字符(相当于[0-9])
ipt.onblur = function(){
//匹配,以数字开头结尾,并且数字至少有一个
console.log( /^\d+$/.test(this.value) ) ;
} ;
\D非数字字符(相当于[^0-9])
\s 空白字符
ipt.onblur = function(){
//匹配,以空白字符开头且以空白字符结尾,空白字符可以重复0次到无限次
//数字必须要有一个
console.log( /^\s{0,}\d{1,}\s{0,}$/.test(this.value) ) ;
} ;
\S非空白字符(相当于[^ \t\n\x0B\f\r])
\s 单词字符(相当于[a-zA-Z_0-9])
\W 非单词字符(相当于[^a-zA-Z_0-9])
简单类
//
//包含abc,只能多不能少,abc不能拆开
/abc/.test('abcde');
[]
//只要包含abc中任意一个就满足
/[abc]/.test('abcde'); //true
/[abc]/.test('a'); //true
/[abc]/.test('pppabcdd'); //true
负向类
- ^只有在[]里才表示非,在[]外面表示已某某开头
ipt.onblur = function(){
//匹配,不能以0到9的数字开头或结尾,并且重复1到多次,字符的中间也不能有0到9
console.log( /^[^0-9]{1,}$/.test(this.value) ) ;
} ;
组合类
[0-9a-zA-Z]
正则边界
//^:以某某开头 $以某某结尾
//必须要以数字开头并且以数字结尾
/^[0-9]$/.test('string');
量词
* 重复0次或多次
ipt.onblur = function(){
//匹配,数字重复0次或更多次都正确,不输入也正确
console.log( /[0-9]*/.test(this.value) ) ;
} ;
+ 重复1次或更多次
?重复0次或1次
{ n , m } 重复次数n<= x <=m
| 或,(([0-9]+)|([a-z]{+}))要么数字要么字母
优先级
量词 < | < ^$ < ()
replace() 替换
用正则去除首尾空格
function trim(str) {
return str.replace(/(^\s+)|(\s+$)/g,""); // 去掉前面和后面的空格
}
正则案例
验证邮箱
//[0-9a-zA-Z_.-]+ 至少重复一次0-9a-zA-Z_.-
//[@]
//
/[0-9a-zA-Z_.-]+[@][0-9a-zA-Z]+([.][a-zA-Z]){1,2}/