正则表达式
何时使用:
如何使用:
简单的正则
备选字符集
- 语法:
/^[备选字符集]$/
- 强调
- 一个中括号,只管一位字符
- 问题:正则表达式默认只要满足就不管后续了,而我们做验证的人,希望的是用户从头到尾按照我们的要求来,希望从头到尾完全匹配:
- 解决:前加^,后加$,两者同时使用,代表要求从头到尾完全匹配
/^[备选字符集]$/只要做验证必加!
- 特殊
- 如果备选字符集中的ascii码是连续的,那么可用-省略掉中间部分
- 一位数字:
[0-9];
- 一位字母:
[A-Za-z];
- 一位数字、字母、下划线:
[0-9A-Za-z_]
- 一位汉字:
[\u4e00-\u9fa5]
- 除了xxx之外的:
[^0-9] - 很少使用,范围太广了
预定义字符集
- 一位数字:
\d ===>[0-9]
- 一位数字、字母、下划线:
\w ===> [0-9A-Za-z_]
- 一位空白字符:
\s
- 一位除了换行外的任意字符:
. - 很少使用,范围太广了
- 建议:优先使用预定义字符集,预定义满足不了我们再用备选字符集补充
量词
有明确数量
- 字符集
{n,m}:前边相邻的字符集,至少n个,最多m个
- 字符集
{n,}:前边相邻的字符集,至少n个,多了不限
- 字符集
{n}:前边相邻的字符集,必须n个
无明确数量
- 字符集
?:前边相邻的字符集,可有可无,最多1个
- 字符集
*:前边相邻的字符集,可有可无,多了不限
- 字符集
+:前边相邻的字符集,至少一个,多了不限
选择和分组
- 选择:在多个规则中选一个
规则1|规则2
- 分组:将多个字符集临时组成一组子规则
(规则1|规则2)
指定匹配位置
^:开头
$:结尾
- 特殊:两者同时使用,前加^,后加$,表示从头到尾要求完全匹配 - 只要你做【验证】
密码强度验证
(?![0-9]+$) -> 不能全由数字组成,可能有大写、小写、汉字、日文、特殊符号...
(?![a-z]+$) -> 不能全由小写组成,可能有数字、大写、汉字、日文、特殊符号...
(?![0-9a-z]+$) -> 不能全由数字组成、也不能全由小写组成、也不能全由数字和小写的组合组成
支持正则表达式的字符串API
- 切割:
var arr=str.split("固定切割符"/RegExp);
- 替换
- 基本替换法:
str=str.replace(/正则表达式/后缀,"新内容");
- 高级替换法
str=str.replace(/正则表达式/后缀,function(a,b,c){
return 判断a关键字的长度,而返回不同的星星数量
});
正则对象
- 创建:
- 直接量:
var reg=/正则表达式/后缀;
- 构造函数:
var reg=new RegExp("正则表达式","后缀");
- API:
- 验证:
var bool=reg.test(用户输入的);