正则表达式

155 阅读2分钟

正则表达式的用途:过滤字符串(找出符合要求的字符串)

创建一个正则表达式

第一种方法: 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