JavaScript正则表达式
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。
RegExp对象用于规定在文本中的检索。
当您检索某个文本时,可以使用一种模式来描述要检索的内容。RegExp就是这种模式。
简单的模式可以是一个单独是字符,更复杂的模式包括了更多的字符,并用于解析、格式检查、替换等等。
您可以规定字符串的检索位置,以及要检索的字符类型,等等。
正则表达式可用于所有文本搜索和文本替换的操作。
语法:
/pattern/modifiers;
实例:
var patt = /w3school/i;
实例解析:
/w3school/i是一个正则表达式。
w3school是一个模式(用于检索)。
i是一个修饰符(搜索不区分大小写)。
使用字符串方法:
在JavaScript中,正则表达式通常用于两个字符串方法:search()和replace()。
search()方法用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。
replace()方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
定义RegExp
RegExp对象用于存储检索模式。
通过new关键词来定义RegExp对象,以下代码定义了名为patt1的RegExp对象,其模式是“e”:
var patt1 = new RegExp("e");
当您使用该RegExp对象在一个字符串检索时,将寻找到的是字符“e”。
RegExp对象的方法
RegExp对象有三个方法: test()、exec()、compile()。
test()
test()方法检索字符串的指定值。返回值是true或false。
例子:
</pre><pre class="html" name="code">var patt1 = new RegExp("e");
document.write(patt1.test("The best things in life are free"));
由于该字符串中存在字幕“e”,以上代码的输出结果将是:true。
exec()
exec()方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配失败,则返回null
例子1:
var patt1 = new RegExp("e");
document.write(patt1.exec("The best things in life are frees"));
由于该字符串中存在字母“e“,以上代码的输出将是:e。
例子2:
您可以向RegExp对象添加第二个参数,以设定检索。例如,如果需要找到某个字符的所有存在,则可以使用“g”参数(“global”)。
请参考RegExp对象参考手册,学习关于如何修改搜索模式的完整信息。
在使用“g”参数时,exec()的工作原理如下:
1)找到第一个“e”,并存储其位置。
2)如果再次运行exec(),则从存储的位置开始搜索,并找到下一个“e”,并存储其位置。
var patt1 = new RegExp("e","g");
do
{
result = patt1.exec("The best thing in life are free");
document.write(result);
}
while(result != null);
由于这个字符串中有6个“e”字母,代码的输出将是:eeeeeenull
compile()
compile()方法用于改变RegExp。
compile()既可以改变检索模式,也可以添加或删除第二个参数。
例子:
<strong>var patt1 = new RegExp("e");
document.write(patt1.test("The best things in life are free"));
patt1.compile("d");
document.write(patt1.test("The best things in life are free"));</strong>
由于字符串中存在“e”,而没有“d”,以上代码的输出是:truefalse