克服正则的学习的恐惧症

前端时间的自学的时候,怎么没吃透正则的用法,最近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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,511评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,495评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,595评论 0 225
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,558评论 0 190
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,715评论 3 270
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,672评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,112评论 2 291
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,837评论 0 181
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,417评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,928评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,316评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,773评论 2 234
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,253评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,827评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,440评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,523评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,583评论 2 249

推荐阅读更多精彩内容

  • 正则表达式功能: 测试字符串的某个模式。例如对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信...
    DecadeHeart阅读 556评论 0 1
  • 忘了从哪收集的资料了,放这儿,以备不时之需。 只能输入数字:"^[0-9]*$"。 只能输入n位的数字:"^\d{...
    study_monkey阅读 1,353评论 0 7
  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 2,098评论 0 9
  • 转自: JS正则表达式一条龙讲解,从原理和语法到JS正则、ES6正则扩展,最后再到正则实践思路 温馨提示:文章很长...
    前端渣渣阅读 1,729评论 1 32
  • 图片1【http://upload-images.jianshu.io/upload_images/6699248...
    小菜c阅读 452评论 0 1