
正则表达式中的特殊字符
| 特殊字符 | 含义 |
|---|---|
| i | 忽略大小写,放最后 |
| g | 提取数组中的所有匹配项,放最后 |
| . | 可以匹配除换行符以外的任意单个字符 |
| \ | 用来对特殊字符进行转义 |
| [] | 用来定义一个字符集合,其含义是必须匹配该集合里的字符之一。有两种形式:1,把所有字符列举出来;2,利用原字符“-”以字符区间的方式给出;[0123456789]与[0-9]等价 |
| ^ | 只有当它出现在一个字符集合里(被放在[和]之间)并紧跟在左方括号[的后面时,它是“求非”的作用(如:非数字[^0-9])。如果是在一个字符集合的外面并处于一个模式的开头,它匹配字符串的开头 |
| \b | 指定一个单词边界(\bcap\b匹配cap;\bcap匹配captain,cap,cape;cap\b匹配cap,recap) |
| $ | 字符串的结尾 |
| [\b] | 退格 |
| \f | 换页 |
| \n | 换行 |
| \r | 回车 |
| \t | Tab键 |
| \v | 垂直制表符 |
| \d | 任何一个数字字符(等价于[0-9]) |
| \D | 任何一个非数字字符(等价用于[^0-9]) |
| \w | 任何一个字母(大小写都可),数字,下划线(等价于[a-zA-Z0-9_]) |
| \W | 任何一个非字母数字或非下划线字符 |
| \s | 任何一个空白字符 |
| \S | 任何一个非空白字符 |
| + | 匹配字符或字符集合的一次或多次重复出现 |
| * | 匹配字符或字符集合的零次或多次重复出现 |
| ? | 匹配字符或字符集合的零次或一次重复出现 |
| {} | 设定匹配字符或字符集合重复出现次数的最小值和最大值 |
| () | 子表达式 |
| |
或者 |
回溯引用匹配
1)、回溯引用指的是模式的后半部分引用在前半部分中定义的子表达式
\1:代表模式里的第一个子表达式
\2:代表模式里的第二个子表达式
以此类推;
2)、回溯引用在替换中的应用:
文本:
313-555-1234
248-555-9999
810-555-9000
正则表达式:
(\d{3})(-)(\d{3})(-)(\d{4})
替换:
($1) $3-$5
结果:
(313) 555-1234
(248) 555-9999
(810) 555-9000
前后查找
1)、向前查找
以(?=)开头的子表达式
应用:
文本:
正则表达式
.+(?=:)
结果:
http://www.forta.com
https://mail.forta.com
ftp://ftp.forta.com
2)、向后查找
以(?<=)开头的子表达式
应用:
文本:
ABC01: $23.45
HGG42: $5.32
Tatal items found:4
正则表达式
(?<=$)[0-9.]+
结果:
ABC01: $23.45
HGG42: $5.32
Tatal items found:4
备注:java、.NET,PHP和Pert都支持向后查找,而javaScript不支持
常用例子
1、手机号码
// 验证10-11位数字
^[0-9]{10,11}$
2、替换html字符串代码中的img标签的src地址
function textHandle(publicUrl, text) {
// publicUrl:替换后的图片地址
// text 需要进行替换的文本
// 替换img标签的src地址
text.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, (match, capture) => {
text = text.replace(new RegExp(capture, 'g'), `${publicUrl}`);// 这里也可以替换成需要的路径
});
return text;
}
let text = '<img src="1213232" alt="" >bnsciqcowqnnce <img src="wxw1314" alt="">bdciwenhcwe <img src="wxw12345678" alt="">'
console.log(textHandle("myurl",text));
// 输出: <img src="myurl" alt="" >bnsciqcowqnnce <img src="myurl" alt="">bdciwenhcwe <img src="myurl" alt="">
3、获取地址栏参数
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null)
return decodeURI(r[2]);
return null;
}