正则表达式

什么是正则表达式

  • 正则表达式(regular expression)描述了字符串的“构成模式”,经常被用于检查字符串是否符合预定的格式要求
// 要检查的字符串
var str = '456789';
// 正则表达式规则
var regexp = /^\d{6}$/;
// 检查
if (regexp.test(str)) {
alert('符合规则');
} else {
alert('不符合规则');
}
  • 用一个例子快速演示正则表达式基本使用方法:检查某个字符串是否是6位数字
    正则表达式“按位”描述规则,是指它是一位一位的描述字符串的构成形式
  • 比如检查字符串是不是这样的:以字母m开头,然后是3个数字,最后以字母n结尾
    /^m\d\d\dn$/
    元字符
  • “元字符”是指一位指定类型的字符
元字符功能
\d匹配一个数字
\D匹配一个非数字字符
\w匹配一个单字字符(字母、数字或者下划线)
\W匹配一个非单字字符
\s匹配一个空白字符,包括空格、制表符和换行符. 任意字符

开头和结尾

元字符功能
^匹配开头
$匹配结尾

元字符注意事项

  • 如果使用new RegExp()写法,反斜杠需要多写一个
  • 比如/^\dKaTeX parse error: Got function '\newline' with no arguments as superscript at position 1: \̲n̲e̲w̲l̲i̲n̲e̲’)是相同的意思

元字符使用举例

  • 某快递公司运单号形式是这样的:123-4567-890,请使用正则表达式检查某字符串是否符合此格式
  • 某产品的验证秘钥形式是这样的:□□□-□□□□-□□□,其中□表示字母数字或者下划线,请使用正则表达式检查某字符串是否符合此格式

字符的转义

  • 在特殊字符之前的反斜杠\表示下一个字符不是特殊字符,应该按照字面理解
    /^\.$/
    /^\\$/
    /^.$/

  • 不管一个符号有没有特殊意义,都可以在其之前加上一个\以确保它表达的是这个符号本身

  • 举例:某产品批号形式为:123.45^67#89,请使用正则表达式检查某字符串是否符合此格式

方括号表示法

  • 使用方括号,比如[xyz],可以创建一个字符集合,表示匹配方括号中的任意字符

  • 比如某学校的学号规定:第1位是一个字母,b表示本科生,y表示研究生,后面是7位数字,用正则表示为:
    /^[by]\d{7}$/

  • 可以使用短横-来指定一个字符范围,^表示否定
    元字符 等价的方括号表示法

\d [0-9]
\D [^0-9]
\w [A-Za-z0-9_]
\W [^A-Za-z0-9_]

量词

量词意义
*匹配前一个表达式0次或多次。等价于{0,}
+匹配前面一个表达式1次或者多次。等价于{1,}
?匹配前面一个表达式0次或者1次。等价于{0,1}
{n}n是一个正整数,匹配了前面一个字符刚好出现了n次
{n,}n是一个正整数,匹配前一个字符至少出现了n次
{n,m}n和m都是整数。匹配前面的字符至少n次,最多m次

修饰符

修饰符意义
i不区分大小写搜索
g全局搜索

修饰符的使用:

var re = /m/gi;
var re = new RegExp('m', 'gi');

正则表达式的相关方法

  • test()
    测试某字符串是否匹配正则表达式,返
    回布尔值

  • exec()
    根据正则表达式,在字符串中进行查找,
    返回结果数组或者null

  • 正则表达式的test()方法用来测试某字符串是否匹配此正则表达式,它返回true或false
    /^[a-z]{3}[a-ln-z]$/.test('abcd')

  • exec()方法功能是:在一个指定字符串中执行一个搜索匹配查找,返回一个结果数组或null

var str = 'abc123def456ghi789';
var regexp = /\d+/;
var result1 = regexp.exec(str);
  • exec()方法最有趣的是,有“g”修饰符的正则表达式将自动成为“有状态”的,这意味着可以对单个字符串中的多次匹配结果进行逐条的遍历
var str = 'abc123def456ghi789';
var regexp = /\d+/g; // 有g修饰符
var result1 = regexp.exec(str);
var result2 = regexp.exec(str);
var result3 = regexp.exec(str);
var result4 = regexp.exec(str);
console.log(result1);
console.log(result2);
console.log(result3);
console.log(result4);

字符串有哪些方法可以使用正则表达式呢?

方法简介
search()在字符串中根据正则表达式进行查找匹配,返回首次匹配到的位置索引,测试不到则返回-1
match()在字符串中根据正则表达式进行查找匹配,返回一个数组,找不到则返回null
replace()使用替换字符串替换掉匹配到的子字符串,可以使用正则表达式
split()分隔字符串为数组,可以使用正则表达式

用正则表达式进行表单验证

  • 用正则表达式进行表单验证是正则表达式最重要的实际应用
  • 实际上,很多正则表达式不需要我们自己写,可以通过搜索引擎查找,可以拿来即用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值