js中的正则表达式

js中的正则表达式

var box = new RegExp(''); 标准格式
var box = /Box/; 字面格式 更为常用
正则表达式中有test()、exec()两种比较格式
test() 有值时返回true 无值时返回false
exec() 返回的是数组格式 有值时为内容 无值时为
null
match() 将所有匹配的字符串按数组的方式返回 有 全局变量时返回所有的值 无全局变量时返回第一个值找不到时返回的null
search() 返回的是第一个匹配的位置 无需全局变量 找不到时返回的是-1
replace() 将找到的字符串换为现在的字符串,不开启全局变量时只改变第一个找到的变量字符串,开启全局变量则会全部改变,需要开启全局变量
静态属性 必须先执行一下 静态属性才有效
RegExp.leftContext 匹配的字符串的左半部分
RegExp.rightContext 匹配的字符串的右半部分
RegExp.lastMatch 最后一个匹配的字符串
RegExp.lastParen 分组情况 需要内容中有() 可
以打出()中的内容
i 表示匹配时不会区分大小写
g 表示全局 匹配时从全局匹配
m 表示多行匹配 匹配换行符两端的潜在匹配
"." 点符号表示匹配除换行符以外的一切字符 但必
需是一一对应的
"*" 表示可以有一个、0个、或者多个
"+" 表示至少要有一个
"?" 表示可以是一个 或者0个 不可以是多个
{2,4} 表示可以匹配o的数量为2~4个 包括2,4
{} 表示数量只能为{}内的数字的个数
{,} 表示o的数量只能为{}内的数字的个数 或括号
内的数字的以上的个数
[a-z] 表示a-z的26个字母都可以替换 因为第一个位
置没有设置 所以第一个可以为任何数字
^ 表示从第一个开始匹配,+表示可以有多个数
字进行匹配
\w 表示[0-9a-zA-Z_]
\W 表示[^0-9a-zA-Z_]
\d 表示[0-9]
\D 表示[^0-9]
^ 从头开始匹配 $从尾开始匹配
两个同时使用时 只能有一个google
\s 表示匹配空格
\b 表示是否到达边界
| 表示或选择匹配 不用完全相等 包含关系 使用多
组选择时 必须用()包含起来
RegExp.$1 表示获取模式中第一个分组对应的匹配
的字符串使用前必须先运行一下
$1 表示获取元素中第一个匹配的字符串
+ 表示贪婪 将所一样的字符串全部替换为1
+? 表示惰性 只将第一个字符替换为1 其余的
不进行替换
?= 表示前瞻属性 只有后面的值为?= 后面的值
才可以输出?=前面的值
?: 表示禁止捕获符号 加在需要禁止的分组前
var box = /8(.*?)8/g; //应先设置惰性 此时会出现一个
google 在设置全局 会出现想
var str = '8google8 8google8 8google8';
document.write(str.replace(box,'<strong>$1</strong>'));
正则表达式的简单练习
var box = /^([a-z]+)\s([0-9]{4})$/;
var str = 'google 2012';
var a = box.exec(str);
//alert(a.length); //返回的值是3
alert(a[0]); //第一次返回的值为整个数组
alert(a[1]); //第二次返回的值为数组的第一个值
alert(a[2]); //第三个返回的值为数组的第二个值
var box = /(\d+)([a-z]+)/; //(\d)为捕获性分组 所有分组都会被捕获并且返回
var str = '123abc';
alert(box.exec(str));
返回所有的值 整个字符串 第一个字符串 第二个字符串
var box = /(\d+)(?:[a-z]+)/; //?:为禁止捕获符号 在需要禁止的分组前加?:就可以禁止它的捕获
var str = '123abc';
alert(box.exec(str));
分组的嵌套 很少使用
var box = /(a?(b?(c?)))/; //嵌套分组 由外到内获取
var str = 'abc';
alert(box.exec(str));
先获取整个字符串 abc
在获取最外面的分组 abc
在获取第二层分组 ab
在获取最内层的分组 a
var box = /goo(?=gle)/; //goo后面的值只有是gle时才会返回goo 前瞻性捕获
var str = 'google';
alert(box.exec(str)); //返回的是goo
var box = /\[/; //用"\" 对特殊字符进行转译
var str = '[';
alert(box.test(str));
var box = /^\d+/gm; //var box = /\d+/g;
//需要控制首时 需要加m换行符 可以把数字全部转换为#
var str = '1.google\n2.soso\n3.baidu';
alert(str.replace(box,'#'));
var box = /box/;
var str = 'this is box,that is box';
alert(box.test(str));
alert(box.exec(str));
alert(str.match(str));
正则表达式的应用
只能输入邮编
var box = /^[1-9][0-9]{5}$/;
var str = '122000';
alert(box.test(str));
邮箱的输入验证
var box = /^([\w\.\_]+)@([\w\.\_]+)([a-zA-Z\.]{2,4})$/;
var str = 'heihei@qq.weixin.com';
alert(box.test(str));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值