认识正则
- 正则表达式(英语):Regular Expression;
- 本质:用来记录文本规则的代码;
- 应用场景:表单验证、高级搜索、生化科学等。
正则构成
- 由一些普通字符和元字符组成,普通字符就是字母和数字,元字符具有特殊意义的字符,匹配腾讯QQ号:[1-9][0-9]{4,}【五位数字以上,即从10000开始】
正则声明
- 创建正则表达式的两种方式:
- 1、通过构造函数定义
- var 变量名 = newRegExp(/表达式/);
- 2、通过直接量定义
- var 变量名 = /表达式/;
- 1、通过构造函数定义
认识正则
\d
:预定义类:表示数字- test()方法:
- 正则对象方法,检测字符串是否符合该规则,返回true,和false,参数(测试字符串)。
字符类 — 预定义类
预定义类 | 正则表达 | 中文解释 |
---|---|---|
. | [^\n\r] | 除了换行和回车之外的任意字符 |
\d | [0-9] | 数字字符 |
\D | [^0-9] | 非数字 |
\s | [\t\n\x0B\f\r] | 空白字符 |
\S | [^ \t\n\x0B\f\r] | 非空白字符 |
\w | [a-zA-Z0-9] | 单词字符 |
\W | [^a-zA-Z_0-9] | 非单词字符 |
特殊字符
特殊字符 | 正则表达 | 中文解释 |
---|---|---|
\t | /\t/ | 制表符 |
\n | /\n/ | 换行符 |
\r | /\r/ | 回车符 |
\f | /\f/ | 换页符 |
\b | /\b/ | 与回退字符 |
\v | /\v/ | 垂直制表符 |
\0 | /\0/ | 空字符 |
字符类 — 简单类
- []整体对应一个字符,如[abc],里面的内容表示该位置可以是哪些字符,即测试的字符只要包含里面的任意一个就可以。简单类还有一个/abc/:表示至少包含
abc
,比如abcd
;
字符类 — 负向类
括号内,前面加个元字符^
进行取反,表示匹配不能为括号里面的字符。
console.info(/[abc]/.test('abc'));//true,包含子集的字符串是对的
console.info(/[^abc]/.test('abc'));//false,是子集那么就返回false
注意:这里的^是写在[]里面的,因为在//里面表示正则的开始。
字符类 — 范围类
- 有时匹配的东西过多,而且类型又不同,全不输入太麻烦,我们可以在中间加一个中划线
-
表示范围区间。
console.info(/[a-z]/.test('11111')); //false
console.info(/[A-A]/.test('A1')); //true
字符类 — 组合类
- 用中括号匹配不同类型的单个字符。
console.info(/[a-m1-5]/.test('b')); //true
console.info(/[a-m1-5\n]/.test('2')); //true
边界
^
会匹配行或者字符串的起始位置$
会匹配行或字符串的结尾位置^
和$
一起使用,表示必须这个(精确匹配)
量词
*
:重复零次或更多(>=0),也可以用{0,}
表示+
:重复一次或更多次,也可以用{1,}
表示?
:重复零次或一次,也可以用{0,1}
表示{n}
:n次(x=n){n,}
:重复n次或更多(x>=n){n,m}
:重复出现的次数比n多但比m少(n<=x<=m)
案例
- 1、匹配座机号
/(^0\d{2}-8\d{7}$)|(^0\d{3}-3\d{6}$)/
- 2、匹配中文【2-4位】
/^[\u4e00-\u9fa5]{2,4}$/
- 3、验证QQ号:
/^[1-9][1-9{4,}$]/
- 4、验证手机号
/((13[0-9])|(15[^4,\D])|(18[0-9]))\d{8}$/
- 5、验证邮箱
/^[\w\-\.]+\@[\w]+\.[\w]{2,4}$/
- 6、验证座机号
/^0\d{2}-\d{8}$|^0\d{3}-\d{7}$/
- 7、验证用户名
/^[a-zA-Z0-9_-]{3,16}$/
- 8、验证密码
/^[\$a-zA-Z0-9_-]{6,18}$/
匹配密码强度
- 区分大小写英文字母
/^([a-z].*[A-Z])|([A-Z].*[a-z])$/
- 带有字母和数字
/^([a-z].*[0-9])|([A-Z].*[0-9])|[0-9].*[a-zA-Z]$/
- 字母数字中间加下划线(想要什么中括号中加)
/^[A-Za-z0-9]+[_$][A-Za-z0-9]*$/
replace函数
- replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
- var str2 = str1.replace(/要替换/ig,”替换成”);
i
:表示忽略大小写,g
表示全局替换。
自定义trim函数【IE6、7、8不支持】
input.onblur = function(){
var val = this.value;
if(trim(val) == "") {
return alert("不能输入为空");
}
alert("成功!" + trim(val) + "1");
}
function trim(str) {
//将字符串的前面和后面的空格去除掉
return str.replace(/(^\s+)|(\s+$)/g,"");
}