正则表达式
正则表达式:
什么是: 专门描述字符串中每位字符出现规律的表达式
格式的定义
何时使用: 只要按规律同时查找,替换,验证多个关键词时
都要先定义格式规则
如何使用:
1. 最简单的正则就是关键词的原文
2. 字符集: 规定一位字符的备选字符列表
[备选字符的列表]
强调: 一个字符集[],只能匹配一位字符
特殊: 1. 如果字符集中的字符部分连续
可用-省略中间的字符,-读作“到”
常用: 一位数字: [0-9]
一位大写字母:[A-Z] 小写[a-z]
一位汉字: [\u4e00-\u9fa5]
一位字母数字或下划线: [0-9A-Za-z_]
2. 除了xxx:[^xxx]
^读作"除了",必须在[]的开头
比如: 除了4和7之外所有字符:[^47]
3. 预定义字符集: 对常用字符集的简化写法
一位数字: \d =>[0-9]
一位字母数字或下划线: \w =>[0-9A-Za-z_]
一位空字符: \s => 包括: 空格 制表符 换行
一位任意字符: .
何时使用: 如果需求和预定义字符集完全匹配,则优先使用预定义字符集。否则自定义普通字符集
4. 量词: 规定字符集出现次数的规则
一般紧跟在字符集之后,修饰相邻的字符集
有明确数量:
{n,m} 最少n次,最多m次
{n,} 最少n次,多了不限
{n} 必须n次,不能多也不能少
不确定数量:
? 可有可无,最多一次
* 可有可无,多了不限
+ 至少一次,多了不限
5. 选择和分组:
选择:或 | 表示在两个规则之间挑一个匹配
优先级最低
分组: 在正则表达式内部用()划分子表达式
何时: 获取关键词的部分内容时,都要先分组再匹配
希望数量词修改一组字符集时
手机号: +86或0086 可有可无,最多一次
空字符 可有可无,多了不限
1
3,4,5,7,8
9位数字
(\+86|0086)?\s*1[34578]\d{9}
例子:
var str="one two three four five";
var i=4;
var reg=/\b[a-z]+\b/g;
str=str.replace(reg,function(kwords){
return kwords+=i++;
});
console.log(str);//one4 two5 three6 four7 five8