本文共 3047 字,大约阅读时间需要 10 分钟。
f89c
里面有详细的语法跟例子,希望对大家有帮助.
var str = "abc\\def"; // 直接量 var reg = /abc/i; // i 是忽略大小写 var Str = "ABCDe"; // 创建的第二种方式 var regg = new RegExp("abc","igm"); // RegExp() 要是这个参数放进去的本身是正则表达式, // 那么它是相同的规则,但是不是同一个引用 var reg1 = RegExp(reg); var reg2 = new RegExp(reg); // reg1 跟 reg 是同一个,他们指向同一个地址 // reg2 内容跟这个 reg是一样的, 但是他们不是指向同一个地址
1. i 执行对大小写不敏感的匹配。2. g 执行全局匹配查找所有匹配而非在找到第一个匹配后停止3. 执行多行匹配
1. reg.test(str);判断str字符串是不是包含这个reg片段2. str.match(reg)把匹配的reg串给返回
1. [abc] 查找方括号之间的任何字符2. [^abc] 查找任何不在方括号之间的字符3. [0-9] 0到9数字4. [a-z] 查找任何从小写 a 到小写 z 的字符5. (red|blue|green) 查找任何指定的选项也就是不是当个字符,可能是个字符串
1. \w等于[0-9A-z_]也是代表一位(world)2. \W等于[^\w] 表示的\w的非3. \d等于[0-9] \D等于[^\d]4. \s元字符用于查找空白符(空格符 制表符 回车符 换行符 垂直换行符 换页符) \S 查找非空白字符 \s === [\t\n\r\v\f ]5. \b 匹配单词边界 \B 匹配非单词边界6. . === [^\r\n]
1. n+ 匹配任何包含至少一个 n 的字符串 {1,}2. n* 匹配任何包含零个或多个 n 的字符串 {0,}3. n? {0,1}4. n{x} 表示的就是三个5. n{x,y} 表示的是x到y个6. n{x,} 表示就是x到无限个7. n& 匹配任何结尾为 n 的字符串8. ^n 匹配任何开头为 n 的字符串9. ?=n 匹配任何其后紧接指定字符串 n 的字符串10. ?!=n 匹配任何其后没有紧接指定字符串 n 的字符串
1. global global 属性来检测正则表达式是否具有标志 g2. ignoreCase RegExp 对象是否具有标志 i3. lastIndex 一个整数,标示开始下一次匹配的字符位置4. multiline 属性用于返回正则表达式是否具有标志 m5. source 正则表达式的源文本
1. exec 检索字符串中指定的值 返回找到的值 并确定其位置2. compile 编译正则表达式3. test 检索字符串中指定的值。返回 true 或 false
1. search 检索与正则表达式相匹配的值2. match 找到一个或多个正则表达式的匹配3. replace 替换与正则表达式匹配的子串4. split 把字符串分割为字符串数组
var reg4 = /(\w)\1(\w)\2/g; // () 这个整体叫做是子表达式 // 上面自然而言就是有两个子表达式 // // \数字表示的意思就是copy一份前面的值 var str4 = "aabb"; console.log(str4.match(reg4)); console.log(reg4.exec(str4));
var str = "aaaaaa";var reg = /a{1,3}?/g;var ans = str.match(reg);
// 匹配xxyy形式,然后换成yyxx var reg3 = /(\w)\1(\w)\2/g; var str3 = "aabbccdd"; // var tmp = str3.match(reg3); var ans = str3.replace(reg3,"$2$2$1$1"); //bbaa // var anss = str3.replace(reg3,function(arr,$1,$2){ // // console.log("arr内容:"+arr); // console.log($2); // return $2 + $2 + $1 + $1; // });
// the-first-name // theFirstName var reg5 = /-(\w)/g; var str = "the-first-name"; var ans1 = str.replace(reg5,function ($,$1){ // 这个方法调用的次数取决于匹配了多少次就调用多少次 // $1 表示的就是第一个子表达式的内容 return $1.toUpperCase(); });
var str = '1234567890'; var f = str.replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,'); console.log(f);
解释:
正则表达式 \d{1,3}(?=(\d{3})+$) 表示前面有1~3个数字,后面的至少由一组3个数字结尾。?=表示正向引用,可以作为匹配的条件,但匹配到的内容不获取,并且作为下一次查询的开始。 $& 表示与正则表达式相匹配的内容,具体的使用可以查看字符串replace()方法的
// 正向预查 正向断言 var str4 = "aba!aa"; var reg44 = /a(?=b)/g; //表示的是a后面要是b,但是这个b不参加最后结果 console.log(str4.match(reg44)); var f = '1234567890'.replace(/\d{1,3}(?=(\d{3})+$)/g, '$&,');console.log(f); // 结果:1,234,567,890
转载地址:http://ivaq.baihongyu.com/