正则表达式

// 一、正则表达式生成
// 1、调用regExp对象的构造函数 new RegExp('', 'gim')  转义字符需要两个 如\\.
// 2、使用正则表达式字面值,将匹配模式封闭在两个斜杠中 /^()[]\d\w$/gim

// 二、正则的组成
// 1、元字符
//     字符匹配:. \w \W \d \D \s \S
//     位置匹配: \b \B ^ $ (?=p) (?!p)
// 2、标志字符
//     m、g、i
// 3、限定符
//     * + ? {m} {m,} {m,n}
// 4、转义字符
//     * + ? | \ / { [ ( ) ] }^ $ . 这些字符匹配本身需要转义

// 三、正则的相关方法
//  test exec search match replace split 

// 四、正则匹配模式
// 精确匹配
//          /hello/.test(‘hello’);
// 模糊匹配 
//          “123 1234 12345 123456”.match(/\d{2,5}/g);     //[“123”, “1234”, “12345”, “12345”]    “a0b a1b a2b a3b a4b”.match(/a[123]b/g);     // [“a1b”, “a2b”, “a3b”]
//  排除字符 'baby,back,bad,good'.match(/\b([^b,]\w+)\b/g)
//  分支匹配(分支结构是惰性的,即当前面的匹配上了,后面的就不再尝试了 )'beacher'.match(/beach|beacher/g); //beach 
//  分组匹配(使用括号来提供分组功能 ) ”ab abb abab".match(/(ab)+/g);  //["ab", "ab", "abab"]
//  分组引 "2017-06-12".replace(/(\d{4})-(\d{2})-(\d{2})/,  "$2/$3/$1")
//  反向应用(可以在正则本身里引用分组。但只能引用之前出现的分组,即反向引用 )var a = “2017-06-12”;var b = “2017/06/12”;var c = “2017.06.12”;/\d{4}(-|\/|\.)\d{2}\1\d{2}/.test(a);
//  位置匹配
//  “hello”.replace(/^|$/g, ‘#’);      // #hello#          “hello”.replace(/\b/, ‘#’);          //#hello        “hello”.replace(/(?=l)/g, ‘#’)      //he#l#lo        “hello”.replace(/(?!l)/g, ‘#’)       //#h#ell#o#
// 贪婪模式'a123bbb'.match(/a.*b/g);  //["a123bbb"]'123456'.match(/\d+/g);   //["123456"]
// 非贪婪模式(在限定符后面直接加上一个问号?就是非贪婪模式)'a123bbb'.match(/a.*?b/g);     //["a123b"]'123456'.match(/\d+?/g);      //["1", "2", "3", "4", "5", "6"]
// 捕获分组(以小括号()来实现,捕获性分组工作模式()会把每个分组里匹配的值保存起来) /([a-z]+)(\d+)/.exec('a133');     // ["a133", "a", "133", index: 0, input: "a133”]
// 非捕获分组(分组(?:)会作为匹配校验,并出现在匹配结果字符里面,但不作为子匹配返回) /(?:[a-z]+)(?:\d+)/.exec('a133');  // ["a133", index: 0, input: "a133”]

// 五、常用正则
// 1、匹配汉字:^[\u4e00-\u9fa5]{0,}$2、 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$3、日期格式:^\d{4}-\d{1,2}-\d{1,2}
// 4、时间:/^(0?[0-9]|1[0-9]|[2][0-3]):(0?[0-9]|[1-5][0-9])$/ 5、一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$6、一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$7、中国邮政编码:[1-9]\d{5}(?!\d)8、IP地址:((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))
// 9、匹配id: '<div id="container" class="main"></div>’.match(/id="[^"]*"/ );
// 10、格式化货币:function format (num) { return num.toFixed(2).replace(/\B(?=(\d{3})+\b)/, ",").replace(/^/, "$$ "); }; 
// 11、去掉左右空格: '    javascript   '.replace(/^\s+|\s+$/g, ''); 
// 12、每个单词的首字母转换为大写 : function format(str) { return str.toLowerCase().replace(/(?:^|\s)\w/g, function (c) { return c.toUpperCase(); }); } 
// 13、匹配标签: "aaa<title>hello</title>" .match(/<([^>]+)>[\d\D]*<\/\1>/)
// 14、身份证号码:/^(\d{15}|\d{17}[\dxX])$/

// 六、正则原理:回溯


// let reg1 = /javascript/.test('hello,javascript');
// console.log(reg1);

// let reg2 = /(a and )?(b and )?c/.exec('a and b and c');
// console.log(reg2);

// let reg3 = 'hellojavascript'.search(/script/);
// console.log(reg3);

// let reg3 = 'a and b and c'.match(/(a and )?(b and )?c/)[5];
// console.log(reg3);

// let reg4 = 'hello world'.replace(/(\w+)\s(\w+)/,'$2 $1');
// console.log(reg4);

// let reg5 = '111hello world222'.replace(/([a-z|A-Z]+)\s[a-z|A-Z]+/,"--$`$'$&$$$1--");
// console.log(reg5);

// let reg6 = '111hello world222'.replace(/([a-z|A-Z]+)\s[a-z|A-Z]+/, function (match, p1, offset, string) {
//     console.log(match, 'match');
//     console.log(p1, 'p1');
//     console.log(offset, 'offset');
//     console.log(string, 'string');
//     return match;
// });
// console.log(reg6);

// let reg7 = 'hello world'.split(/(\sw)/);
// console.log(reg7);

// let reg8 = 'hello world'.split(/(\sw)/);
// console.log(reg8);

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

推荐阅读更多精彩内容