JS基础12(正则表达式)

正则表达式
正则表达式是由普通字符及特殊字符组成的对字符串进行过滤的逻辑公式
正则表达式创建

  1. 字面量的方式
  var reg = /abc/;
  1. 构造函数
  var reg = new RegExp("abc");

test方法 正则表达式的方法 用来检测正则字符串是否含有符合规则的子串,有,返回true,无,返回false

var str = "abc";
var flag = reg.test(str);
console.log(flag); //true

修饰符 g i
g 表示全局匹配

var reg = /abc/g;
var str = "abcabc";

match方法字符串方法

console.log(str.match(reg));//["abc","abc"]

i 表示忽略大小写

var reg = /abc/gi;
var str = "AbcABCabc";
console.log(str.match(reg));//["Abc","ABC","abc"]

search方法用于查找符合规则的子串的位置,只返回第一个匹配的位置

var reg = /abc/;
var str = "12345abc";
console.log(str.search(reg));//5

split方法 以…进行分割

var reg = /good/;
var str = "good good study!";
console.log(str.split(reg));//[""," "," study!"]

replace方法替换

var reg = /tmd/i;
var str = "abc tmd abc TMD";
console.log(str.replace(reg,"*")); //abc * abc TMD

var reg = /tmd/gi;
var str = "abc tmd abc TMD";
console.log(str.replace(reg,"*")); //abc * abc *

exec方法正则表达式的方法将匹配成功的内容放到数组里,如果没有匹配成功,则返回null

var reg = /good/;
var str = "good good study";
console.log(str.exec(str));//["good",index: 0,input:"good good study"]

. 除了换行符之外的所有单个字符

var reg = /g..gle/gi;
var str = "googleg--gle";
console.log(reg.test(str));  //true
console.log(str.match(reg));//["google","g--gle"]

var reg = /g.gle/gi;
var str = "googleg--gle";
console.log(reg.test(str));  //false

星号(*) 重复多次匹配,匹配任意次(0-n);

var reg = "/g*gle/gi";
var str = "gle";
console.log(reg.test(str));//true

var reg = "/g*gle/gi";
var str = "ggggggle";
console.log(reg.test(str),str.match(reg));//true  ["ggggggle"]

+ 至少又一次重复匹配

var reg = /g+gle/gi;
var str = "gle";
console.log(reg.test(str));//false

var reg = /g+gle/gi;
var str = "ggle";
console.log(reg.test(str));//true

? 进行0或者1次匹配

var reg = /g?gle/gi;
var str = "ggle";
console.log(reg.test(str),str.match(reg));//true ["ggle"]

var reg = /g?le/gi;
var str = "le";
console.log(reg.test(str),str.match(reg));//true ["le"]

var reg = /g?le/gi;
var str = "ggggle";
console.log(reg.test(str),str.match(reg));//true ["gle"]

[ ] 表示可以出现的范围[0-9]

var reg = /[0-9]/gi;
var str = "abc";
console.log(reg.test(str));//false

var reg = /[0-9]/gi;
var str = "ab1c";
console.log(reg.test(str));//true

\w数字字符下划线等同于[0-9 a-z A-Z]
\W非数字字母下划线

var reg = /\w+/gi;
var str = "abc13";
console.log(reg.test(str),str.match(reg));//true ["abc13"]

\d表示数字[0-9]
\D表示非数字

var reg = "/\d+/gi";
var str = "12345abc";
console.log(reg.test(str),str.match(reg));//true ["12345abc"]

\s匹配空格

var reg = /\s+/gi;
var str = "good good study! ";
console.log(str.replace(reg,""));//goodgoodstudy!

{ m,n} 至少匹配m次,至多匹配n次 可以省略至多 即{m}

var reg = /go{3,6}gle/gi;
var str = "gooogle";
console.log(reg.test(str));//true

var reg = /go{3,6}gle/gi;
var str = "google";
console.log(reg.test(str));//false

var reg = /go{3,6}gle/gi;
var str = "gooooooogle";
console.log(reg.test(str));//false

/^ 匹配开始 **$/**匹配结尾

var reg = /^g.+g$/gi;
var str = "gooogle";
console.log(reg.test(str));//false

var reg = /^g.+g$/gi;
var str = "gooogleg";
console.log(reg.test(str));//true

|

var reg = /google|baidu|bing|yahoo|gi/;
var str = "www.baidu.com";
console.log(reg.test(str),str.match(reg));//true ["baidu"]


( ) 分组 将内容作为一个整体进行匹配

var reg = /(google){4,6}/gi;
var str = "googleaaagoglegooglegooglegoogle";
console.log(reg.test(str));//false

var reg = /(google){4,6}/gi;
var str = "googleaaagooglegooglegooglegoogle";
console.log(reg.test(str),str.match(reg));//true ["googlegooglegooglegoogle"]
console.log(RegExp.$1);//google

$1 $2

var reg = /(.*)\s(.*)/;
var str = "taobao baidu";
console.log(str.replace(reg,"$2 $1"));//baidu taobao

例题

var oInput = documnet.getElementById("username");
oInput.onchange = function(){
	var val = this.value;
	var reg = /^[a-zA-Z_]\w{5,14}$/;
	if(reg.test(val)){
		console.log("格式正确");
	}else{
		console.log("格式错误,请重新输入!")
	}
}

用户名:<input type = "text" id = "username">(数字、字母、下划线组成的6-15位字符,且不能以数字开头)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值