正则表达式(也译作“规则表达式”)可理解为规则、模式,是一种强大的字符串匹配工具。
JS中的正则表达式有两种写法:
- JS风格(构造函数方式):
i:忽略大小写;
g:全局匹配;
m:多行匹配。
var reg =/abc/
var reg2=/abc/ig
- perl风格(字面量方式)
var reg = new RegExp("abc");
var reg = new RegExp("abc","ig");
可用于正则表达式的方法
Regular expressions are used with the
RegExp
methods test
and exec
and with the String
methods match
, replace
, search
, and split
.
下面通过实例进行说明:
RegExp提供的方法
1. test()方法:如果被查找的字符串包含正则表达式中表示的模式,返回true,否则返回false。
<script type="text/javascript">
var str = "time to study";
var regex = /tud/;
if (regex.test(str)) {
alert("found!");
} else {
alert("no match!");
}
</script>
2.
exec()方法:如果匹配失败,返回null,否则返回包含和正则表达式匹配的字符串的数组
如果执行exec方法的正则表达式没有分组(没有括号括起来的内容),那么如果有匹配,他将返回一个只有一个元素的数组,这个数组唯一的元素就是该正则表达式匹配的第一个串;如果没有匹配则返回null。
exec如果找到了匹配,而且包含分组的话,返回的数组将包含多个元素,第一个元素是找到的匹配,之后的元素依次为该匹配中的第一、第二...个分组。分组在下面介绍。
String提供的方法
match | 返回表达式中的子串或者null |
replace(regex,replacement) | 用replacement替换regex |
search(regex) | 返回字符串中regex的开始位置 |
split(regex) | 从字符串中以给定的表达式分割出子字符串数组 |
match
<script type="text/javascript">
var matchArray = new Array();
var str = "I love the small of clover";
var regex = /love/g;
matchArray = str.match(regex);
document.write("found: " + matchArray.length);
</script>
输出:
found: 2
search
<script type="text/javascript">
var str = "I love the small of clover";
var regex = /love/;
var index = str.search(regex);
document.write("found at pos: " + index);
</script>
输出:
found at pos: 2
replace
<script type="text/javascript">
var str = "abc;abcc;abccc";
var regex = /;/;
var splitArr = new Array();
splitArr = str.split(regex);
for (var i=0; i<splitArr.length; i++) {
document.write(splitArr[i]+"<br/>");
}
</script>
输出:
abc
abcc
abccc
abcc
abccc
split
<script type="text/javascript">
var str="111,222,333";
var arr=str.split(",");
for (var i in arr)
document.write(arr[i] + "<br/>");
</script>
输出:
111
222
333
元字符
元字符(Meta-Characters)是正则表达式中具有特殊意义的专用字符,用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式。
正则表达式里有很多元字符,常用元字符如下表所
示。
其中,“+”元字符规定其前导字符必须在目标对象中连续出现一次或多次,“*”元字符规定其前导字符必须在目标对象中出现零次或连续多次,而“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次。
. | 查找单个字符,除了换行和行结束符 |
\w | 查找单词字符 |
\W | 查找非单词字符 |
\d | 查找数字 |
\D | 查找非数字字符 |
\s | 查找空白字符 |
\S | 查找非空白字符 |
\0 | 查找null字符 |
\n | 查找换行符 |
\f | 查找换页符 |
\r | 查找回车符 |
\t | 查找制表符 |
\v | 查找垂直制表符 |
\xxx | 查找以八进制数 xxx 规定的字符 |
\xdd | 查找以十六进制数 dd 规定的字符 |
\uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符 |
方括号
匹配一个范围内的字符。
[a-z][0-9] | 匹配括号中的字符集中的任意字符 |
[^a-z][0-9] | 匹配不在括号中的字符集中的任意字符 |
锚元字符
如果要从行,字,字符串开始或者结束处匹配,需要用锚元字符。
^ 从行首或者字符串开始处匹配
$ 从行尾或者字符串末尾处匹配
\b 匹配字符边界
\B 匹配非字符边界