认识正则表达式(上)

本片介绍 javascript 里的正则表达式

是什么

遇到不认识的事物时,人们第一想到的可能是想知道这个东西,是什么?但是,实际上定义一个东西很难,即使是较为恰当的描述,也可能是晦涩难懂的。本篇选择直接略过这个问题。

而正则表达式作为一个“工具”,更为直接的描述方式是,这个东西能用来干什么,以及怎么使用它。

功能

正则表达式可以用来描述一个字符串。

比如:

  • 以字母 A 开头的字符串
  • 不包含数字的字符串
  • 包含大小写字母、数字及特殊符号的字符串
  • 符合 email 地址规则的字符串
  • ……

显然,正则表达式和字符串的关系非同一般。字符串上还有几个方法,与正则表达式有关。

String 上的方法

search

可能你这么用过 String.search 方法:

var str = 'aaa123aaa';
var index = str.search('123');
console.log(index); // 3

乍一看和 String.indexOf 差不多,确实这样,如果 search 方法收到一个字符串参数( 比如 A.search(B)),会像 indexOf 一样,返回 B 字符串在 A 字符串第一次出现的位置。和 indexOf 方法不同的是,search 方法可以接收正则表达式对象,假设有一个对象 R 表示“数字组成的字符串”,那么就会有下面的结果:

var R = xxxx; // 这里先不考虑如何创建正则表达式对象
var str = 'aaa123aaa';
var index = str.search(R);
console.log(index); // 3

相同的,search 方法也可以用来检索“非数字、字母”第一次出现的位置、“大写字母第一次出现的位置”、“ ‘abc’ 或者 ‘bbc’ 或者 ‘ccc’ 第一次出现的位置” ……

replace

这个就是很常用的方法了:

var str = 'aaa123aaa';
var str2 = str.replace('123',0);
console.log(str2); // aaa0aaa

那么上例中的 str2 同样可以替换为一个正则表达式对象:把字符串中的数字替换为xxx,把非数字、字母替换为 ""(删除非数字字母的字符)

match

码者前两天正好用到了这个方法,需求是获取本页路径最后一个反斜杠后面的内容。先上码:

var path = 'http://www.xxx.com/api/user/6'; // 也就是获取 /6
var R= xxxx; // 此处的 R 假设表示“最后一个 / 以及后面的内容
var results = path.match(R);
var result = results[0];
console.log(result); // "/6"

不难理解:match 方法匹配正则表达式描述的子字符串,并返回匹配到的结果。

RegExp 上的方法

在 javascript 里,像有关数学方面的操作,我们会想到 Math 对象,比如 Math.ceil, Math.floor 方法;像有关日期的操作,我们会想到 Date 对象,比如 Date.now, Date.getTime;有一个叫 RegExp 的对象,用来封装一些有关正则表达式方面的方法。

test

这是可能是正则表达式最简单,使用率最高的方法了吧。比如注册账户的时候,我们需要检测一下用户输入的手机号是否是正确的格式。就可以:

var R = xxxx; // 一个用来描述手机号格式的正则表达式对象
var tel = '1564xxxx330';
var result = R.test(tel);
console.log(result); // true 或者 false

可以说,RegExp.test 就是用来检验一个字符串的格式

exec

这是一个和 String.match 方法很像的方法,本文重点在对正则表达式的认识,不再赘述。

以上所有例子、方法都只大致介绍一个方法最基本的功能,其实正则表达式的功能远比本文所说的强大很多很多,而且还有更多实用的方法。更详细的内容请百度(不建议一开始就把所有功能记住,建议用到的时候看一下),比如搜索关键字 js+match

如何创建 RegExp 对象

上面的内容是介绍正则表达式有什么作用,以及一些简单的使用方法。而正则表达式的难点,在于如何创建自己需要的正则表达式。请关注下篇。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值