1:定义:(reguler expression)
用来简化操作字符串的一种方法,其他语言也有正则
2,特点:
操作简单方便,属于底层语言,所以性能极高
3:申明方式:
var reg=/规则/选项
var reg=new regexp(规则,选项)
他们的区别也很简单,第一个里不能方变量,第二个可以
4,正则中的选项有:
img i即忽略大小写m为多行g是全部的意思,简称img
5,常见转义符:
\d数字 \w(world)单词 \s空格 \d非数字 \大W非单词的其他所有 \大S非空格
小小注意:.的用法:.单纯的一个点代表任意,.代表.本身的意思
在正则中/[]*^$都有自己的意思,如果需要用符号本身就需要转义
6,量词:
+:若干个 {n}正好n个 {n,m}最少n,最多m {n,}最少n,多则不限 {,n}最多n,最少0
*即{0}:可以没有,多了不限 +即{1,}最少一个,多了不限 ?即{0,1}可以没有,最多一个
7,修饰词:
| 或
^开头 如果在中括号里代表排除,在外边别时开头
$结尾
[]中括号里面所有的东西都是原本符号的意思
():1提高优先级,2分组(\d)
8,相对之前字符串方面,新增了一些方法:
str.search(规则)搜索并返回,找到返回下标,没有返回-1
str.match(规则)匹配所有符合规则的字符串,
str.replace('要替换的字符串','替换后的字符串')
str.replace(要替换的规则,'替换后的字符串')
str.replace(要替换的规则,function(s){
//符合正则条件的字符串 return 要替换的
})
9.正则的方法:
reg.rest(str),检查字符串,返回true或false
案例1:手机号码的检测:
oIpn.onblur=function () {
var str=oIpn.value;
var reg=/^1[3-9]\d{9}$/;
alert(reg.test(str))
};
案例2:座机号码的检测:
可以借着上面代码看
var deg = /[08][1 - 9]\d-\d{8}|[08] [1-9]\d{2}-\d{7}/
alert(deg.test(str))
案例3:邮箱\中文\年龄的检测:
inp.onblur = function() {
var str = inp.value
var deg = /[a-z]{6,18}@[a-zA-Z0-9_-]{2,16}(\.[a-z]{2,16}){1,2}/;
alert(deg.test(str))
}
var teg = /1[89]|[2-9]\d|100/ //18-100的年龄
var teg = /[\u4e00-\u9fa5]{2,9}/; //关于中文的验证
案例4:rime函数去掉首位空格
ot.onblur = function() {
// var str = ot.value;
// var teg = /(^\s+)|(\s$)/g;
// var chen = str.replace(teg, '')
// console.log(str)
// console.log(chen)
var chen=ot.value;
var bu=/^\s+|\s$/g;
var hong=chen.replace(bu,'')
console.log(chen)
console.log(hong)
}
案例5:用正则实现首字母大小写:
var oIpn=document.getElementsByTagName('input')[0];
oIpn.onblur=function () {
var str=oIpn.value;//获取input中的value
var reg=/[a-z]+\s?/g;//[a-z]+多个字母 \s:空格
var res=str.replace(reg,function (s) {//切割字符串到空格位置,
console.log(s)
return (s[0].toUpperCase()+s.substring(1)).trim()//通过下标志来操作字符串
})
alert(res);窗口输出返回值
};
案例6:过滤元素标签:
var oIpn=document.getElementsByTagName('input')[0];
oIpn.onblur=function () {
var str=oIpn.value;
var reg=/<[^>]+>/g;
var res=str.replace(reg,'');
alert(res);
};
补充:做项目中正则必须统一管理,一个项目中正则只有一套
如何管理以及维护:
var reg{
用户名:username:/【首位必须大写a-zA-Z0-9】/
密码:passworld:/[a-z{5,17}]/
}
将所有的正则都放在json或者文件里面;