克服正则的学习的恐惧症

2016-10-08  本文已影响18人  love2013

前端时间的自学的时候,怎么没吃透正则的用法,最近js有一定的提高,开始有时间补充漏洞的时候!

1.何为正则呢?

正则也叫规则,让计算机能识别人类的规则

2.正则的操作那些呢?---字符串的

3.正则的表达式:

var str=/正则表达式/;

var str=new RegExp("","");是字符串形式,当正则需要传参的时候,用正则的全称的写法

4.正则的常用的方法

test:正则去匹配字符串,如果匹配成果就返回时真true,反而时false

写法:正则.test(字符串);

例:

var str = 'abcdef';

var re = /b/;

alert( re.test(str) );*/---true;

/*\s : 空格

\S : 非空格

\d : 数字

\D : 非数字

\w : 字符  ( 字母 ,数字,下划线_ )

\W : 非字符*/

var str = '374829348791';

var re = /\D/;

if( re.test(str) ){

alert('不全是数字');

}

else{

alert('全是数字');

}

search : 正则去匹配字符串 , 如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回 -1

search的写法 : 字符串.search(正则)

正则中的默认 : 是区分大小写的

如果不区分大小写的话,在正则的最后加标识 i

var str = 'abcdef';

var re = /B/i;

//var re = new RegExp('B','i');

alert( str.search(re) );

match : 正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null

match的写法 : 字符串.match(正则)

正则默认:正则匹配成功就会结束,不会继续匹配

如果想全部查找,就要加标识 g(全局匹配)

量词 : 匹配不确定的位置

+至少出现一次

var str = 'haj123sdk54hask33dkhalsd879';

var re = /\d+/g;

alert( str.match(re) );

replace : 正则去匹配字符串,匹配成功的字符去替换成新的字符串,replace : 第二个参数:可以是字符串,也可以是一个回调函数

replace的写法 : 字符串.replace(正则,新的字符串)

var str = 'aaa';

var re = /a+/g;

str = str.replace(re,'b');

alert(str);

| : 或的意思

敏感词过滤:

window.onload = function(){

var aT = document.getElementsByTagName('textarea');

var oInput = document.getElementById('input1');

var re = /菲称|中国船|监视之下/g;

oInput.onclick = function(){

//aT[1].value = aT[0].value.replace(re,'*');

aT[1].value = aT[0].value.replace(re,function(str){

//函数的第一个参数:就是匹配成功的字符

//alert( str );

var result = '';

for(var i=0;i

匹配子项 : 小括号 ()  (还有另外一个意思,分组操作)

把正则的整体叫做(母亲)

//然后把左边第一个小括号里面的正则,叫做这个第一个子项(母亲的第一个孩子)

//第二个小括号就是第二个孩子

例:

var str = '2013-6-7';

var re = /(\d+)(-)/g;

str = str.replace(re,function($0,$1,$2){

//第一个参数:$0(母亲),第二个参数 : $1(第一个孩子)

//,第二个参数 : $1(第二个孩子)

//alert( $2 );

//return $1 + '.';

return $0.substring(0,$0.length-1) + '.';

});

alert( str );  //2013.6.7

例2:

var str = 'abc';

var re = /(a)(b)(c)/;

alert( str.match(re) );  //[abc,a,b,c](当match不加g的时候才可以获取到子项的集合)

字符类 : 一组相似的元素  [] 中括号的整体代表一个字符

例:

var str = 'abdc';

var re = /a[bde]c/;

alert( re.test(str) );*/

排除 : ^ 如果^写在[]里面的话,就代表排除的意思

/*var str = 'abc';

var re = /a[^bde]c/;

alert( re.test(str) );*/

var str = 'abc';

var re = /a[a-z0-9A-Z]c/;

alert( re.test(str) );

获取class的方法

找重复项最多的字符和个数

var str = 'assssjdssskssalsssdkjsssdss';

var arr = str.split('');

str = arr.sort().join('');

//alert(str);

var value = '';

var index = 0;

var re = /(\w)\1+/g;

str.replace(re,function($0,$1){

//alert($0);

if(index<$0.length){

index = $0.length;

value = $1;

}

});

alert('最多的字符:'+value+',重复的次数:'+index);

//量词 : {}

/*{4,7}  : 最少出现4次,最多出现7次

{4,} : 最少出现4次

{4} : 正好出现4次

+ : {1,}  //\d{1,}

? : {0,1}  : 出现0次或者1次

* : {0,}  : 至少出现0次*/

常用的正则表达式

高级表单校验

匹配中文:[\u4e00-\u9fa5]

行首行尾空格:^\s*|\s*$

Email:^\w+@[a-z0-9]+(\.[a-z]+){1,3}$

网址:[a-zA-z]+://[^\s]*

QQ号:[1-9][0-9]{4,9}

邮政编码:[1-9]\d{5}

身份证:[1-9]\d{14}|[1-9]\d{17}|[1-9]\d{16}x

把方法包在一个空间里

有人管他叫——命名空间

在公司里,把同一类方法,包在一起

JSON的使用

把之前的方法,包在一起

总结:

1 . 修饰词

i  :匹配时忽略大小写

g : 匹配时全局匹配,查找所有匹配项,而非查找到一个既停止

2 . 匹配模式

方括号

---方括号用于查找某个范围内的字符:

表达式描述

[abc]查找方括号之间的任何字符。

[^abc]查找任何不在方括号之间的字符。

[0-9]查找任何从 0 至 9 的数字。

[a-z]查找任何从小写 a 到小写 z 的字符。

[A-Z]查找任何从大写 A 到大写 Z 的字符。

[A-z]查找任何从大写 A 到小写 z 的字符。

[adgk]查找给定集合内的任何字符。

[^adgk]查找给定集合外的任何字符。

(red&|blue&|green)    查找任何指定的选项。

转义字符

---转义字符Metacharacter)是拥有特殊含义的字符:

.查找单个字符,除了换行和行结束符。

\w查找单词字符。

\W查找非单词字符。

\d查找数字。

\D查找非数字字符。

\s查找空白字符。

\S查找非空白字符。

\b匹配单词边界。

\B匹配非单词边界。

\0查找 NUL 字符。

\n查找换行符。

\f查找换页符。

\r查找回车符。

\t查找制表符。

\v查找垂直制表符。

\xxx查找以八进制数 xxx 规定的字符。

\xdd查找以十六进制数 dd 规定的字符。

\uxxxx查找以十六进制数 xxxx 规定的 Unicode 字符。

量词描述

n+匹配任何包含至少一个 n 的字符串。

n*匹配任何包含零个或多个 n 的字符串。

n?匹配任何包含零个或一个 n 的字符串。

n{X}匹配包含 X 个 n 的序列的字符串。

n{X,Y}匹配包含 X 或 Y 个 n 的序列的字符串。

n{X,}匹配包含至少 X 个 n 的序列的字符串。

n$匹配任何结尾为 n 的字符串。

^n匹配任何开头为 n 的字符串。

?=n匹配任何其后紧接指定字符串 n 的字符串。

?!n匹配任何其后没有紧接指定字符串 n 的字符串。

RegExp 对象方法

方法描述

compile编译正则表达式。

exec检索字符串中指定的值。返回找到的值,并确定其位置。

test检索字符串中指定的值。返回 true 或 false。

支持正则表达式的 String 对象的方法

方法描述

search检索与正则表达式相匹配的值。

match找到一个或多个正则表达式的匹配。

replace替换与正则表达式匹配的子串。

split把字符串分割为字符串数组。

原文链接:http://www.jianshu.com/p/4fb6354708e6

一、什么是正则表达式(Regular Expression)

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑( 即用这种方法来匹配想要的东西)。

文/XZ阳光小熊(简书作者)

原文链接:http://www.jianshu.com/p/786938bb6d6f

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

上一篇 下一篇

猜你喜欢

热点阅读