RegExp 为什么 匹配我们想要的字符串 是什么: 匹配字符串的规则 怎么创建正则表达式 第一种方式是直接通过/正则表达式/写出来, 第二种方式是通过new RegExp('正则表达式')创建一个RegExp对象 var re1 = /ABC-001/; var re2 = new RegExp('ABC\-001');//因为字符串的转义问题,字符串的两个\实际上是一个,字符串中的反斜杠有特殊含义 re.test('010-12345'); // true RegExp对象的test()方法用于测试给定的字符串是否符合条件。 要做更精确地匹配,可以用[]表示范围 用逗号切分字符串 'a,b;; c d'.split(/[s\,;]+/); // ['a', 'b', 'c', 'd'] s表示空格 分组 用()表示的就是要提取的分组(Group) 如果正则表达式中定义了组,就可以在RegExp对象上用exec()方法提取出子串来 var re = /^(d{3})-(d{3,8})$/; re.exec('010-12345'); // ['010-12345', '010', '12345'] exec()方法在匹配成功后,会返回一个Array,第一个元素是正则表达式匹配到的整个字符串,后面的字符串表示匹配成功的子串。 exec()方法在匹配失败时返回null 贪婪匹配 正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符 必须让d+采用非贪婪匹配(也就是尽可能少匹配),才能把后面的0匹配出来,加个?就可以让d+采用非贪婪匹配 全局搜索 为什么 正常情况,正则只匹配一次,如果要匹配多次,需要用全局搜索 怎么做到全局搜索 最常用的是g,表示全局匹配 var s = 'JavaScript, VBScript, JScript and ECMAScript'; var re=/[a-zA-Z]+Script/g; // 使用全局匹配: re.exec(s); // ['JavaScript'] re.lastIndex; // 10 re.exec(s); // ['VBScript'] re.lastIndex; // 20 全局匹配可以多次执行exec()方法来搜索一个匹配的字符串。 当我们指定g标志后,每次运行exec(),正则表达式本身会更新lastIndex属性,表示上次匹配到的最后索引 全局匹配类似搜索,因此不能使用/^...$/,那样只会最多匹配一次 正则表达式还可以指定i标志,表示忽略大小写,m标志,表示执行多行匹配。 正则表达式 regExp RegExp 对象有 3 个方法:test()、exec() 以及 compile()。 var patt1=new RegExp("e"); patt1.test("The best things in life are free")//test() 方法检索字符串中的指定值。返回值是 true 或 false。 document.write(patt1.exec("The best things in life are free")); //exec() 方法检索字符串中的指定值。返回值是被找到的值。如果没有发现匹配,则返回 null。 var patt1=new RegExp("e"); document.write(patt1.test("The best things in life are free")); patt1.compile("d");//compile() 方法用于改变 RegExp。compile() 既可以改变检索模式,也可以添加或删除第二个参数。 document.write(patt1.test("The best things in life are free"));特殊元字符 d 0~9任意一个数字 D 非0~9之间的任意字符 w 字母、数字或下划线 [a-zA-Z0-9_] W 非...... s 匹配任意一个空白字符 (包括制表符) 匹配边界符 "hello-world" 匹配一个换行符 转义字符 . 只表示一个小数点 . 表示除了 之外的任意字符 ^ 以某个字符开头 $ 以某个字符结尾 a|b a或者b任意一个 [158] [abc] a或b或c任意一个 [^abc] 除了ac之外的 [a-z] 表示a到z中任意一个字母 [0-9]等价于d [^a-z] () 分组 (?:) 当前分组只匹配不捕获 量词元字符 *出现零到多次 等价于 {0,} ? 出现零到一次 等价于 {0,1} + 出现一次到多次 等价于 {1,} {m} 出现m次 {m,} 出现至少m次 {m,n} 出现m~n次 * 修饰符 i ignoreCase 忽略大小写 * g global 全局匹配 * m multiline 多行匹配 * */ // 正则定义 var arr = [] 或var arr = new Array() // 1 正则字面量 var reg = /d123/g; console.log(typeof reg); // 2 new创建 var reg2 = new RegExp("\d","g"); console.log(reg2);