正则表达式的用途:过滤字符串(找出符合要求的字符串)
创建一个正则表达式
第一种方法:
var reg = /pattern/;
第二种方法
var reg = new RegExp('pattern');
正则表达式的使用方法
第一种方法:
reg.test(str);
第二种方法:
str.match(reg);
特殊属性 i/g/m
| 属性 | 描述 |
|---|---|
| i | 代表ignoreCase忽略大小写 |
| g | 代表的是global全局匹配 |
| m | 代表multiline多行匹配 |
特殊字符
具有特殊含义的字符: \ 转义字符 | 或 /^开头,结尾$/ *,+,?*,+,?
*表示0次或者多次,等同于{0,},即 c* 和 c{0,} 是一个意思。
+表示一次或者多次,等同于{1,},即 c+ 和 c{1,} 是一个意思。
最后,?表示0次或者1次,等同于{0,1},即 c? 和 c{0,1} 是一个意思。
方括号
| 属性 | 描述 |
|---|---|
| [abc] | 查找方括号内的任意一个字符 |
| [^abc] | 查找任何不在方括号内的字符 |
| [0-9] | 查找0-9之间的数字 |
| [a-z] | 查找任何小写字母 |
| [A-Z] | 查找任何大写字母 |
| [A-z] | 查找任何字母 |
| ([a-z]) | 查找指定字符串(子表达式) |
元字符
| 元字符 | 描述 |
|---|---|
| . | 查找单个字符,除了换行符和行结束符 |
| \w | 查找单词字符(匹配字母、数字、下划线。等价于[A-Za-z0-9_]) |
| \W | 查找非单词字符 |
| \d | 查找数字 |
| \D | 查找非数字 |
| \s | 查找空白字符 |
| \S | 查找非空白字符 |
| \b | 查找单词边界 |
| \B | 查找非单词边界 |
| \n | 查找换行符 |
| \f | 查找换页符 |
| \r | 查找回车符 |
| \t | 查找制表符 |
| \v | 查找垂直制表符 |
| \uxxx | 查找以十六位进制数xxxx规定的Unicode字符 |
| [\u4e00-\u9fa5] | 所有中文字符 |
量词
以下均遵循贪婪匹配:
| 量词 | 描述 |
|---|---|
| n+ | 匹配任何包含至少一个n的字符 |
| n* | 匹配任何包含0个或多个n的字符 |
| n? | 匹配任何0个或一个n的字符 |
| n{X} | 匹配X个n的序列字符串 |
| n{X,Y} | 匹配X至Y个n的序列字符串 |
| n$ | 匹配以n结尾的字符串 |
| ^n | 匹配任何以n开头的字符串 |
| ?=n | 正向肯定预查匹配任何后面紧接着指定字符串n的字符串 |
| ?!n | 正向否定预查匹配任何其后没有紧接着指定字符串n的字符串 |
| ?<=n | 反向肯定预查匹配任何前面紧跟着指定字符串n的字符串 |
| ?<!n | 反向否定预查匹配任何前面没有紧接着指定字符串n的字符串 |
字符串方法
| 方法 | 描述 |
|---|---|
| search | 检索正则表达式相匹配的值 |
| match | 查找所有符合正则匹配条件的结果 |
| replace | 替换与正则表达式匹配的字符串 |
| split | 把字符串分割成数组(注: 用字表达式分割的话会保留子表达式) |
RegExp对象方法
| compile | 编译正则表达式。 (就是改变这个正则表达式) |
| exec | 检索字符串中指定的值。返回找到的值,并确定其位置。 |
| test | 检索字符串中指定的值。返回 true 或 false。 |
习:
/^\d|\d$/g //检验字符串首或尾是否含有数字
/^\d[\s\S]*\d$/g //检验字符串首尾是否都含有数字
将字符串"the-first-name"替换为驼峰式 方法一:
var str = "the-first-name";
var reg= /-[a-z]/g;
var newStr = str.replace(reg,function(){
var word = arguments[0].slice(1);
return word.toUpperCase;
})
方法二:
var str = "the-first-name";
var reg= /-([a-z])/g;
var newStr = str.replace(reg,function(matchStr,$1){
return $1.toUpperCase();
})
判断字符串是不是由数字组成
function isDigit(str){
var reg = /^\d*$/;
return reg.test(str);
}
//删除字符串两侧的空白字符。
function trim(str){
return str.replace(/^\s+|\s+$/g,'');
}
//删除字符串左侧的空白字符。
function ltrim(str){
return str.replace(/^\s+/g,'');
}
//删除字符串右侧的空白字符。
function rtrim(str){
return str.replace(/\s+$/g,'');
}
给10000000000三位打点 变成 10.000.000.000
var str = '10000000000';
var reg = /(?=(\B)(\d{3})+$)/g;
str.replace(reg, '.'); //10.000.000.000