js-正则表达式

80 阅读1分钟

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或者文件里面;