文档章节

JavaScript 正则表达式 学习笔记(一)

Ethel_oo
 Ethel_oo
发布于 02/27 16:30
字数 1121
阅读 29
收藏 0

名词解释

正则表达式:Regular Expression,在代码中常简写为RegEx、RegExp或RE。

使用方法

JS中主要有两种使用正则表达式的方法:创建RegExp对象方法、直接量方法。

方法一:创建RegExp对象

对象声明:

new RegExp(pattern, attributes);

pattern:一个正则表达式字符串;

attributes:检索模式,包含"g"、"i"、"m"三种。g(global):全局匹配,i(ignoreCase):不区分大小写,m(multiline):多行匹配。

使用方法:

RegExp对象有三个方法:compile()、test()、exec()。

1.test()方法:

test()方法返回检索匹配的结果值,返回值为布尔值。

示例代码:

// 匹配字符"e"
var re = new RegExp("e");
//test方法返回值为true或false
var result = re.test("The best things in life are free.");
document.write(result);

**输出结果:**true

2.exec()方法:

exec()方法返回检索匹配的结果值,返回值为被找到的值,如果没有发现匹配值则返回null。

示例代码:

// 匹配字符"e"
var re = new RegExp("e");
//test方法返回值为true或false
var result = re.exec("The best things in life are free.");
document.write(result);

**输出结果:**e

3.compile()方法:

compile()方法可重新编译已被初始化的正则表达式。

示例代码:

var re = new RegExp("e");
var result1 = re.test("The best things in life are free.");
document.write(result1);

re.compile("d");

var result2 = re.test("The best things in life are free.");
document.write(result2);

**输出结果:**truefalse

方法二:直接量语法

简单点,就是使用String对象内部的四个支持正则表达式的方法来匹配数据。毕竟正则大部分时刻匹配的都是字符串嘛~

语法声明:

/pattern/attributes

使用方法:

一共四个:search()、match()、replace()、split()。其中search()、match()可返回正则匹配结果,而replace()、split()可根据正则匹配结果对字符串进行相应的替换或拆分处理。

1.search()方法:

从字符串的开始位置检索,返回匹配的元素第一次出现的位置下标。默认对大小写敏感。

示例代码一(默认检索,不加attributes):

var string = "A new day has come.";
var result = string.search(/new/);
document.write(result);

**输出结果:**2

示例代码二(默认检索,改变大小写):

var string = "A New Day Has Come.";
var result = string.search(/new/);
document.write(result);

输出结果:-1

示例代码三(取消默认检索,添加attributes忽略大小写):

var string = "A New Day Has Come.";
var result = string.search(/new/i);
document.write(result);

**输出结果:**2

2.match()方法:

返回匹配成功的指定值,而非元素位置。

示例代码一:

var string = "A New Day Has Come.";
var result = string.match(/[e]/g);/*全局搜索所有字符e*/
document.write(result);

**输出结果:**e,e

示例代码二:

var string = "1 plus 2 equals 3";
var result = string.match(/\d/g);/*全局搜索所有数字*/
document.write(result);

**输出结果:**1,2,3

至此,正则匹配返回匹配结果的方法就基本结束了,接下来的replace()和split()方法不会返回匹配结果,一个是根据正则匹配的结果来替换原有字符串,一个是根据正则拆分字符串。

3.replace()方法:

根据正则(或字符串),替换原有字符串的部分值。

语法声明:

stringObject.replace(regexp/substr, replacement)

regexp/substr:正则表达式或字符串;

replacement:替换文本。

示例代码一:

// 把所有的e替换为E
var string = "A New Day Has Come.";
var result = string.replace(/[e]/g, "E");/*写成replace(/e/g, "E")也可以*/
document.write(result);

**输出结果:**A NEw Day Has ComE.

示例代码二:

// 单词互换
var string = "Joe, Jack";
var result = string.replace(/(\w+),\s(\w+)/, "$2, $1");
document.write(result);

**输出结果:**Jack, Joe

示例代码三:

// 将一句话中所有的单词首字母改为大写
var string = "A new day has come.";
var result = string.replace(/\b\w+\b/g, function (word) {
    return word.substring(0, 1).toUpperCase() + word.substring(1);
});
document.write(result);

**输出结果:**A New Day Has Come.

4.split()方法

拆分字符串。

语法声明:

stringObject.split(regexp/substr, maxLength)

regexp/substr:正则表达式或字符串;

maxLength(可选参数):返回数组的最大长度。

示例代码:

// 将一句话中所有的单词分割为数组
var string = "A new day has come.";
var result = string.split(/\s/, 4);/*或者这么写:split(" ", 4)*/
document.write(result);

**输出结果:**A,new,day,has

结束语:这只是笔记(一).... 以上内容总结来自经典网站:w3school

本文转载自:http://www.w3school.com.cn/jsref/jsref_obj_regexp.asp

Ethel_oo
粉丝 8
博文 28
码字总数 15242
作品 0
蚌埠
程序员
私信 提问
分享51本关于JavaScript方面的学习书籍(免费下载)

分享51本关于JavaScript方面的学习书籍(免费下载) 1、JavaScript面向对象15分钟教程 2、原型、作用域、闭包的完整解释 3、Javascript面向对象特性实现(封装、继承、接口) 4、JavaScript面向...

邓剑彬
2012/12/02
1K
12
JavaWeb01-HTML篇笔记(七)

.1 案例三:完成对注册页面的数据的简单校验.1.1.1 需求: 对注册页面的数据进行非空的简单校验!!!如果有某个值没有输入,点击提交,弹出一个对话框进行提示!! 1.1.2 分析:1.1.2.1 技术分...

我是小谷粒
2018/04/28
0
0
JavaScript零基础入门——(七)当字符串遇上正则表达式

JavaScript零基础入门——(七)当字符串遇上正则表达式 欢迎大家回到我们的JavaScript零基础入门,上一节课,我们学习了几种常用的字符串处理的方法,但上节课我们也说了,原生的字符串处理...

JandenMa
2018/06/16
0
0
13篇文章,教你学会ES6知识点

ES6 深入理解ES6》学习笔记 本文用于汇总链接到各个子章节的内容,github 欢迎大家题issues和PR,如果对你有帮助,也可以给 star 支持 :) 目录 第一章 块级绑定 第二章 字符串和正则表达式 ...

你听___
2018/05/08
0
0
精读《高效 javascript》

前言 本期我来给大家推荐的书是《高性能JavaScript》,在这本书中我们能够了解 javascript 开发过程中的性能瓶颈,如何提升各方面的性能,包括代码的加载、运行、DOM交互、页面生存周期等。同样...

程序员解决师
2018/08/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JDK线程池

线程池 类继承关系,方法太多就不列出来了。 Executors Executors扮演线程池工厂的角色,ThreadPoolExecutor就代表一个线程池。Executors提供了各种类型的线程池,主要有以下这些方法: publ...

lazy~
8分钟前
0
0
干货 | IP高防使用配置

一、知识简介 DoS(Denial of Service),即拒绝服务攻击。该攻击是利用目标系统网络服务功能缺陷或者直接消耗其系统资源,目的是使该目标客户的系统不可用,无法提供正常的服务。 DDoS(Dis...

京东云技术新知
17分钟前
3
0
关于Php实现图片压缩

<?php /** * 图片压缩类:通过缩放来压缩。 * 如果要保持源图比例,把参数$percent保持为1即可。 * 即使原比例压缩,也可大幅度缩小。数码相机4M图片。也可以缩为700KB左右。如果缩小比例,则...

chenhongjiang
19分钟前
0
0
numpy 存在旧版本

安装numpy后,引入numpy包的时候报错: ImportError: Something is wrong with the numpy installation. While importing we detected an older version of numpy in ['/usr/lib64/python2.7......

张欢19933
21分钟前
0
0
从零开始实现放置游戏(二)——整体框架搭建

  上一篇,我们讲解了游戏的大概背景,知道了要做什么内容。现在已经可以开始搭建游戏的代码框架。 整体架构   我们将整个项目命名为idlewow,目前包含以下几个模块idlewow-facade, idl...

丶谦信
27分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部