JavaScript学习13-正则表达式

概述

用于匹配字符串中字符组合的模式,JavaScript中正则表达式也是对象。
正则表达式通常用来检索、替换文本,比如验证表单、搜索。

使用

创建正则表达式

利用RegExp对象的构造函数创建

var 变量名=new RegExp(/表达式/);

字面量创建

var 变量名=/表达式/;

test方法用来检测字符串是否符合正则表达式

正则表达式变量.test(要检测的字符串);

exec方法用于检索字符串中的正则表达式匹配,如果有匹配值返回匹配值,没有返回Null

正则表达式.exec(要检测的字符串);
console.log(/o/.exec('hello'));
//['o', index: 4, input: 'hello', groups: undefined]

特殊字符

比如^, $, + …

边界符^和$

^ 表示以谁开始
$ 表示以谁结束

/abc/
表示包含abc的字符串
/^abc/
表示必须以abc开头的字符串
/^abc$/
表示必须是abc的字符串,精准匹配

字符类[ ]

[abc]
[]表示一系列字符,字符串中只需要有其中一个就可以了
/^[abc]$/
必须是[]里的一个字符,精准匹配一个字符
console.log(/^[abc]$/.test('a'));  //true
console.log(/^[abc]$/.test('aa'));  //false

[ ] 里的^表示取反

/^[^a-zA-Z0-9_-]$/   表示不属于大小写英文字母、数字、下划线、横杠

范围 -

/^[a-z]$/
匹配26个小写英文字母的一个
console.log(/^[a-z]$/.test('a'));  //true
console.log(/^[a-z]$/.test('aa'));  //false

字符组合

/^[a-zA-Z0-9_-]$/
匹配26个大小写英文字母或数字或下划线或横杠的一个
console.log(/^[a-zA-Z0-9_-]$/.test('a'));  //true
console.log(/^[a-zA-Z0-9_-]$/.test('aa'));  //false

量词符

设置某个模式出现的次数

量词说明
*重复0次或更多次 ,>=0
+重复一次或更多次,>=1
?重复0次或一次 ,1或0
{n}重复n次,==n
{n,}重复n次或n次以上, >=n
{n,m}重复n~m次 ,>=n,<=m
/^a*$/
表示a重复0次以上
console.log(/^a*$/.test(''));  //true
console.log(/^a*$/.test('aaa'));  //true
/^a+$/
表示a重复1次以上
console.log(/^a+$/.test(''));  //false
console.log(/^a+$/.test('aaa'));  //true
/^a?$/
表示a重复0次或1次
console.log(/^a?$/.test(''));  //true
console.log(/^a?$/.test('a'));  //true
console.log(/^a?$/.test('aaa'));  //false
/^a{3}$/
表示a重复3次
console.log(/^a{3}$/.test('a'));  //false
console.log(/^a{3}$/.test('aaa'));  //true

预定义类

预定类说明
\d0-9的任一字符相当于[0-9]
\D0-9以外的字符,相当于[^0-9]
\w相当于[a-zA-z0-9_]
\W相当于[^a-zA-z0-9_ ]
\s匹配空格,包括换行符、制表符、空格,[\t\r\n\f\v]
\S匹配非空格 ,[^\t\r\n\f\v]

分组()

()包起来的内容表示一个分组,可以通过分组提取自己想要的内容。

console.log(/(name)abc/.exec('name:xiaoming,nameabc'));
//['nameabc', 'name', index: 14, input: 'name:xiaoming,nameabc', groups: undefined]

替换

stringObject.replace(被替换的字符串/正则表达式,替换的字符串);   //返回替换完的新字符串
var str='aabbccddaa';
console.log(str.replace(/aa/,'xx'));   //xxbbccddaa

正则表达式参数

/表达式/[参数]
g: 全局匹配
i: 忽略大小写
gi: 全局匹配+忽略大小写
var str='aabbccddaa';
console.log(str.replace(/aa/g,'xx'));   //xxbbccddxx

常用正则表达式

Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?
手机号码:^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$
日期格式:^\d{4}-\d{1,2}-\d{1,2}
中文字符的正则表达式:[\u4e00-\u9fa5]
空白行的正则表达式:\n\s*\r (可以用来删除空白行)

更多:https://c.runoob.com/front-end/854/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值