JavaScript菜鸟教程

JavaScript 对象

JavaScript 函数

JS HTML DOM

JS 浏览器BOM

AJAX 菜鸟教程

JavaScript 参考手册

JavaScript 正则表达式(RegExp)

正则表达式通常称为“regex”或“ RegExp”,是用于匹配字符串中字符组合的模式。

正则表达式是当今可用的功能最强大的工具之一,可以有效地处理和操作文本。

正则表达式可用于执行所有类型的文本搜索文本替换操作。

正则表达式可以是单个字符,也可以是更复杂的模式。

在JavaScript中,正则表达式也是对象。

创建正则表达式

您可以通过以下两种方式之一创建正则表达式:

使用正则表达式文字,由包含在斜线之间的模式组成,如下所示:

  var regex = /nhooo/g

或调用RegExp对象的构造函数,如下所示:

  var regex = new RegExp("nhooo", "g");

示例说明:

  • nhooo是一种模式(用于搜索)

  • g是修饰符(执行全局匹配)

使用构造函数可以提供正则表达式的运行时编译。

当您不知道模式并从其他来源(例如用户输入)获取模式时,请使用构造函数。

注:文本语法使用正斜杠(/pattern/)来包装正则表达式模式,而构造函数语法使用引号(“pattern”)。

使用字符串方法

在JavaScript中,正则表达式经常使用的三个字符串方法:search()replace()match()

search()方法使用表达式搜索匹配项,然后返回匹配项的位置。

replace()方法返回修改后的字符串,其中将替换模式。

match()方法在字符串中搜索与正则表达式的匹配项,然后将匹配项作为Array对象返回。

search()方法

search()方法执行搜索以查找正则表达式和字符串之间的匹配项。

如果找到匹配项,它将返回第一个匹配项的位置,如果找不到匹配项,则将返回-1

var str = 'The question is to be, or not to be, that is to be.';
var pos = str.search('to be');
测试看看‹/›

以下示例演示了带i修饰符的正则表达式的使用(忽略大小写):

var str = 'The question is TO BE, or not to be, that is to be.';
var pos = str.search(/to be/i);
测试看看‹/›

正则表达式可以使您的搜索功能更加强大(例如,不区分大小写)。

replace()方法

replace()方法返回一个新字符串,该字符串具有部分或全部模式匹配项,并由替换项替换。

第一个参数将是要找到的值,第二个参数将是要替换为的值。

var str1 = 'The question is to be, or not to be, that is to be.';
var str2 = str1.replace('to be', 'ZZZ');
测试看看‹/›

默认情况下,replace()方法仅替换第一个匹配项。

要替换所有出现的内容,请使用带有g修饰符的正则表达式(全局搜索):

var str1 = 'The question is to be, or not to be, that is to be.';
var str2 = str1.replace(/to be/g, 'ZZZ');
测试看看‹/›

要替换不区分大小写的代码,请使用带有i修饰符的正则表达式(忽略大小写):

var str1 = 'The question is TO BE, or not to be, that is to be.';
var str2 = str1.replace(/to be/gi, 'ZZZ');
测试看看‹/›

match()方法

match()方法在字符串中搜索与正则表达式的匹配项,然后将匹配项作为Array对象返回。

var str = 'POLLUTION: Air Pollution is introduction of chemicals to the atmosphere';
var reg = str.match(/ion/g);
测试看看‹/›

正则表达式修饰符

修饰符用于执行全局搜索,区分大小写和多行搜索:

修饰符描述示例
g执行全局匹配,即查找所有匹配,而不是在第一个匹配后停止测试一下
i执行不区分大小写的匹配测试一下
m执行多行匹配测试一下

正则表达式模式

正则表达式模式包括字母,数字,标点符号等的使用,以及一组特殊的正则表达式字符。

方括号[]用于查找一系列字符:

表达式描述示例
[abc]在方括号之间找到任何字符测试一下
[0-9]查找方括号之间的任何字符(任意数字)测试一下
(x|y)查找指定的任何代替方案测试一下

元字符是一个简单的字母字符,前面有一个反斜杠,它的作用是给这个组合一个特殊的意义:

元字符描述示例
\d找一个数字测试一下
\W查找非文字字符测试一下
\s查找空格字符测试一下

量词指定频率或方括号内的字符序列的位置:

表达式描述示例
z+匹配任何包含至少一个z的字符串测试一下
z*匹配任何包含零个或多个z的字符串测试一下
z?匹配任何包含零或一出现z的字符串测试一下

使用RegExp方法

在JavaScript中,RegExp对象是具有预定义属性和方法的正则表达式对象。

test()方法在字符串中搜索模式,并根据结果返回true或false。

exec()方法在字符串中搜索模式,然后将找到的文本作为对象返回。

test()方法

test()方法执行对指定字符串中的匹配项的搜索。

如果找到匹配项,则返回true;否则,返回false

使用test()时,你想知道的模式是否在字符串中找到。

var str = "www.cainiaoplus.com";
var regex = new RegExp("h");
var ans = regex.test(str);
测试看看‹/›

test()返回一个布尔值,不同的是exec()它返回一个字符串。

exec()方法

exec()方法执行对指定字符串中的匹配项的搜索。

如果找到匹配项,则此方法返回匹配的文本;否则,返回null。

var str = "www.cainiaoplus.com";
var regex = new RegExp("h");
var ans = regex.exec(str);
测试看看‹/›

使用正则表达式验证输入

计算字符串中的元音数量:

在输入字段中输入一些文本以显示元音字母数量:

输入的元音字母个数:

运行代码

完整的RegExp参考

有关完整的属性和方法参考,请访问我们的JavaScript RegExp参考

参考部分包含所有RegExp属性和方法的描述和示例。