正则
正则表达式是一种规则,他是跨语言的,用来验证字符串
它是匹配特殊字符或有特殊搭配原则的字符的最佳选择
它的基本书写格式为:/ 匹配条件/附加区域或者附加作用规则
例如:
var s = 'aaaabiceai123dajio13i'
//要找到所有的数字
var reg = /\d+/g;
console.log(s.match(reg)); // ['123','13']
经常用到的匹配字符有:
^:匹配输入字符串的开始位置;
$:匹配输入字符串的结尾位置;
+:一次或多次;
*:零次或多次;
\b:匹配一个单词边界,如er\b,可以匹配ver,但是匹配不了neverd中的er
\B:匹配非单词边界
\d :匹配一个数字字符,相当于[0-9];
\D:匹配一个非数字字符;
\r:匹配一个回车符;
\n:匹配一个换行符;
\s:匹配一个空白字符,包括空格,制表符,换页符等;
\S:匹配一个非空白字符;
\w:匹配字母数字或者下划线;
\W:匹配非字母,数字,下划线;
[a-z]:匹配a-z之间的字母;
[A-Z]:匹配A-Z之间的字母;
[\u4e00-\u9fa5]:匹配一个汉字
然后/后面如果加上g表面是作用于全局,会把给的字符串查找完毕,如果加上i表面不区分大小写,如果加上m,表面多行匹配;
下面,我就写几个例子,看看怎么运用这些字符,来达到我们的需求:
var s = '1ass2s3asdf14asdf';
// 需求:匹配 一个数字紧跟一个字母的内容
var reg = /(\d)([a-z])/g;
while (result = reg.exec(s)) {
console.log(result);
}
// 去掉在字母前的数字
console.log(s.replace(reg, function(substr, g1, g2) {
return g2;
}));
// 需求: 给字符串去重 'aaabbbcccdd' => 'abcd'
var str = 'aaabbbcccdd'
str = str.replace(/(\w)\1+/g, function(substr, g1) {
return g1;
})
console.log(str);
// 需求: 得到一个字符串中中文字符的数量
var s = 'djaizzing中ji耳机21234我003djia';
reg = /[\u4e00-\u9fa5]/g;
console.log(s.match(reg).length);