正则表达式通常称为“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()方法执行搜索以查找正则表达式和字符串之间的匹配项。
如果找到匹配项,它将返回第一个匹配项的位置,如果找不到匹配项,则将返回-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()方法返回一个新字符串,该字符串具有部分或全部模式匹配项,并由替换项替换。
第一个参数将是要找到的值,第二个参数将是要替换为的值。
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()方法在字符串中搜索与正则表达式的匹配项,然后将匹配项作为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的字符串 | 测试一下 |
在JavaScript中,RegExp对象是具有预定义属性和方法的正则表达式对象。
test()方法在字符串中搜索模式,并根据结果返回true或false。
exec()方法在字符串中搜索模式,然后将找到的文本作为对象返回。
test()方法执行对指定字符串中的匹配项的搜索。
如果找到匹配项,则返回true;否则,返回false。
使用test()时,你想知道的模式是否在字符串中找到。
var str = "www.nhooo.com"; var regex = new RegExp("h"); var ans = regex.test(str);测试看看‹/›
将test()返回一个布尔值,不同的是exec()它返回一个字符串。
exec()方法执行对指定字符串中的匹配项的搜索。
如果找到匹配项,则此方法返回匹配的文本;否则,返回null。
var str = "www.nhooo.com"; var regex = new RegExp("h"); var ans = regex.exec(str);测试看看‹/›
计算字符串中的元音数量:
在输入字段中输入一些文本以显示元音字母数量:
输入的元音字母个数:
有关完整的属性和方法参考,请访问我们的JavaScript RegExp参考。
参考部分包含所有RegExp属性和方法的描述和示例。