RegExp

创建正则表达式

1.字面量 var reg = /字符串/gi;

2.构造函数 var reg = new RegExp(“字符串”,“gi”);

  • var reg = new RegExp(变量,“gi”);
  • g 全局匹配
  • i 不区分大小写

3.字符串的方法:
(1) indexOf(keyword[,startIdx])

  • 返回第一次匹配字符在字符串中的索引,匹配不到返回-1

(2) search(keyword)

  • 返回第一次匹配字符在字符串中的索引,支持正则表达式

(3) match(字符串||正则)

  • 默认匹配字符串,返回一个数组
  • 0: 所匹配的字符
  • index:匹配第一个字符所在的索引
  • input:对字符串的引用
//例如输出:
[	"3", index: 34, 
input: "Today t taa isxingdfdgg qi 8.今天_星期3,我必须看到会飘的雪花", 
groups: undefined		]
0: "3"
groups: undefined
index: 34
input: "Today t taa isxingdfdgg qi 8.今天_星期3,我必须看到会飘的雪花"

备注:全局匹配(g),返回一个所有满足匹配条件的字符串组成的数组,如果匹配不到则返回null

正则匹配规则

  1. 字符类
    (1) . 匹配换行外的任意字符
    (2) \d 数字0-9 \D 非数字
    (3) \s 空格
    (4) \b 匹配数字或单词边界(空格、汉字)
    (5) \w : 代表数字或字母或下划线
    (6) \W : 非数字字母和下划线字符
    (7) \B : 匹配非单词边界。

  2. 特殊符号
    (1) []: 代表任意“单个字符” ,里面的内容表示“或”的关系
      ①- 代表范围[a-b]
      ②^ 代表非[^a]

   (2) ()表示分组(n是以左边括号出现的顺序排列)
     ① $1 表示第一个分组
     ②$2 表示第n个分组(不能写在正则表达式里)
     ③\n 在正则分组后面使用,表示对第n个分组的引用(一定要写在正则表达式里)

   (3) | 表示或者

   (4) 锚点定位
     ①^ 表示以什么开头
     ②$ 表示以什么结尾

   (5) 表示数量
     ① * 代表0个或0个以上 <>{0,}
     ② + 代表1个或1个以上 <
>{1,}
     ③ ? 代表0个或1个 <==>{0,1}
     ④ {} 表示数量,默认贪婪模式(会尽可能多的去匹配结果)
      1) {a} 表示匹配a个
      2) {a,} 表示匹配a个及以上
      3) {a,b} 表示匹配a到b个
      4) {1,}? 非贪婪模式,尽可能少的匹配

  1. Unicode编码中的汉字范围
/^[\u2E80-\u9FFF]+$/
  1. 正则表达式的属性和方法
    a) 测试正则表达式用test方法,返回布尔值
      (1) 格式:正则表达式.test(字符串)
      (2) 用<正则表达式>测试<字符串>是否匹配,返回true/false
//例163邮箱正则:
var email = document.getElementById('email').value;
if(!/^[a-zA-Z][\w\-\.]*@[\da-z\-]{1,63}(\.[a-z]{2,3})+$/.test(email)){
	alert("你的邮箱不满足条件");
	return false;//阻止默认行为
}

//涵盖常用邮箱正则:
if(!/^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(email)){
	alert("你的邮箱不满足条件");
	return false;//阻止默认行为
}
//例用户名正则:
//验证账号:
//    不能为空,
//    不能使用特殊字符(只能使用数字、字母、下划线、横杠),
//    必须以字母开头,
//    长度6-20

var username = document.getElementById('username').value;
if(!/^[a-z][\w\-]{5,19}$/i.test(username)){
	alert("你的用户名不满足条件");
	return false;//阻止默认行为
}
//例手机号正则
var phone = document.getElementById('phone').value;
if(!/^1(3|4|5|6|7|8|9)\d{9}$/.test(phone)){
	alert("你的电话号码不满足条件");
	 return false;//阻止默认行为
}
//例身份证正则
var identity = document.getElementById('identity').value;
if(!/^(?:\d{14}|\d{17})[\dX]$/.test(identity)){
    alert("你的身份证不满足条件");
    return false;//阻止默认行为
}
//昵称只能输入3-6个中文
var nickname = document.getElementById('nickname').value;
if(!/^[\u2E80-\u9FFF]{3,6}$/i.test(nickname)){
     alert("你的昵称不满足条件");
     return false;//阻止默认行为
}
//中文名字正则,以汉字开头以汉字结尾
var name = document.getElementById('name').value;
if (!/^[\u4e00-\u9fa5]+(·[\u4e00-\u9fa5]+)*$/.test(name)) {
     alert("你的名字不满足条件");
     return false;//阻止默认行为
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值