js中的正则表达式
JavaScript正则表达式在线测试工具:
http://tools.jb51.net/regex/javascript
正则表达式在线生成工具:
http://tools.jb51.net/regex/create_reg
正则表达式的创建
//使用RegExp对象创建
var regObj = new RegExp("(^\\s+)|(\\s+$)","g"); // 双斜杠表示转义
//使用直接字面量创建
var regStr = /(^\s+)|(\s+$)/g;
修饰符
修饰符 | 描述 |
---|---|
i | 大小写不敏感 |
g | 全局匹配 |
m | 多行匹配 |
范围
注:[]只能匹配一个字符
表达式 | 描述 |
---|---|
[abc] | 方括号内的任意字符 |
[^abc] | 非方括号内的任意字符 |
[0-9] | 0到9的任意数字 |
[a-z] | a-z的任意小写字母 |
[A-Z] | A-Z的任意大写字母 |
[abcd] | abcd中的任意一个字母 |
(a | b |
元字符
元字符:拥有特殊含义的字符
元字符 | 描述 |
---|---|
. | 除了换行和行结束符的任意单个字符 |
\w | 单词字符 |
\W | 非单词字符 |
\d | 数字 |
\D | 非数字 |
\s | 空白字符 |
\S | 非空白字符 |
\b | 匹配单词边界 |
\B | 匹配非单词边界 |
\0 | NULL字符 |
\n | 换行符号 |
\f | 换页符 |
\r | 回车符 |
\t | 制表符 |
\v | 垂直制表符 |
\xxx | 八进制 xxx 规定 |
\xdd | 十六进制数 dd 规定的字符 |
\uxxxx | 十六进制数 xxxx 规定的Unicode字符 |
量词
量词 | 描述 |
---|
-
| [1,+∞]个
-
| [0,+∞]个
? | [0,1]个
{n} | n个
{n,m} | [n,m]个
{n,} | [n,+∞]个
x$ | 以x结尾的字符串
^x | 以x开头的字符串
?=x | 其后紧跟指定字符串n的字符串
?!x | 其后没有紧跟指定字符串n的字符串
RegExp对象方法
方法 | 描述 |
---|---|
compile | 编译正则表达式 |
exec | 检索字符串中指定的值。返回找到的值,并确定其位置 |
test | 检索字符串中指定的值,返回true/false |
代码:
// exec方法:
var str = "Visit W3School";
var patt = new RegExp("W3School","g");
var result;
while ((result = patt.exec(str)) != null) {
console.log(result); // W3School
console.log(patt.lastIndex); // 14
}
// test方法
var str = "Visit W3School";
var patt1 = new RegExp("W3School");
var result = patt1.test(str);
console.log(result); // true
支持正则表达式的String对象的方法
方法 | 描述 |
---|---|
search | 检索与正则表达式相匹配的值,返回的是位置 |
match | 找到一个或多个正则表达式匹配值,返回的是值 |
replace | 替换与正则表达式匹配的子串 |
split | 把字符串分割为字符串数组 |
代码:
// search:返回第一个匹配值的起始位置,如果无匹配值,则返回-1
var str="Visit W3School!"
console.log(str.search(/W3School/)); // 6
// match:找到一个或者多个正则表达式的匹配值
var str="1 plus 2 equal 3"
console.log(str.match(/\d+/g)); // 1,2,3
// replace: 替换正则指定的字符串
var str="Visit Microsoft!"
console.log(str.replace(/Microsoft/, "W3School")); // Visit W3School!
// 把字符串分割成字符串数组
var words = sentence.split(' ')
// 或者:
var words = sentence.split(/\s+/)
"hello".split("", 3) //可返回 ["h", "e", "l"]
常用正则表达式
^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$