正则表达式是一个描述字符规则的对象
创建表达式
// 构建函数构建
var reg = new RegExp('a','ig');
/*
* 'a' 正则的规则
* g 执行全局匹配
* i 代表部分大小写
*/
// 字面量创建
var reg = /study/; // 不带修饰符
var reg = /study/ig; // 带修饰符
正则对象下的正则使用
reg.test(str) 是否包含这个正则对象.返回的值 true/false
console.log(/a/i.test('ABC')); // true
console.log(/a/.test('ABC')); // false
reg.exec(str) 从左到右取第一个符合的正则。返回值 找到则返回被找到的值(只能取出一个匹配值);如果未发现匹配则返回null
console.log( /a/.exec('Baa') ); // ["a", index: 1, input: "Baa", groups: undefined]
console.log( /a/.exec("B") ); // null
字符串对象下的正则使用
str.match(reg) 可在字符串内检索指定的值,或者找到多个正则的匹配。 返回值 数组
'abcabc'.match(/a/); // ["a", index: 0, input: "abcabc", groups: undefined]
'abcAbc'.match(/a/gi); // ['a','A']
'abcabc'.match(/A/g); // null
str.search(reg) 用于检索字符串中指定的子字符串,活检索与正则表达式相匹配的子字符串。返回值 有则返回第一个值的下标值(忽略g,不执行全局),否则返回-1
'abcabc'.search(/b/); // 1
str.replace(reg) 用于在字符串中替换另一些字符
'abcabc'.replace(/b/, 'x'); // axcabc
'abcabc'.replace(/b/g, 'x'); // axcaxc
str.split(reg) 用于把一个字符串分割成一个数组(忽略g,本身自带g的功能)
'abcabc'.split(/b/); // ['a' , 'ca', 'a']
'abcabc'.split(/d/); // ['abcabc']
方括号
[.] 可视为或; 如 [abc] =>a或b或c
'bac'.match(/[ab]/); // ["b", index: 0, input: "bac", groups: undefined]
'bac'.match(/[ab]/g); // ['b', 'a']
[^.] 可视为非;如[^abc] => 除了abc以外
'bac'.match(/[^ab]/g); // ['c']
'bac'.match(/[^ab]/) // ["c", index: 2, input: "bac", groups: undefined]
'bac'.match(/[^abc]/) // null
'bacd'.match(/[^ab]/) // ["c", index: 2, input: "bacd", groups: undefined]
[0-9] 数字1-9 [a-z] 小写字母a-z [A-Z] 大写字母A-Z [A-z] a-z不区分大小写
'a1a2a3'.replace(/[1-9]/g, '=') // a=a=a
'a1a2a3'.replace(/[a-z]/g, '=') // =1=2=3
'a1a2A3'.replace(/[A-Z]/g, '*') // a1a2=3
'a1A2a3'.replace(/[A-z]/g, '*') // =1=2=3
元字符
元字符 | 大白话 | 个人理解 |
---|---|---|
. | 占位符 | 任意一个字符 |
\w | 单词字符 | A-Z a-z 0-9 |
\W | 非单词字符 | + - / \ [ ] 等 |
\d | 数字 | 0-9 |
\D | 非数字 | 除了0-9 |
\s | 空白字符 | 空格 tab \n |
\S | 非空白字符 | |
\b | 单词边界 | 单词的头尾 空白字符 |
\B | 非单词边界 | |
\n | 换行符 | |
\r | 回车符 | |
\t | 制表符 |
量词
元字符 | 大白话 |
---|---|
n+ | 匹配1次或者多次(至少1次) |
n* | 匹配0次或者多次(非1次) |
n? | 匹配0次或者1次 |
n{x} | 匹配连续x个 |
n{x,y} | 匹配连续x-y个之间 |
n{x,} | 匹配连续至少 x个 |
^n | 匹配以n开头 |
n$ | 匹配以n结尾 |
括号
括号为捕获
/(a)b(c)/.exec("abc") // ["abc", "a", "c", index: 0, input: "abc", groups: undefined]
a1 或者c3
"a1b2C3".replace( /(a1|c3)/, "*") // *b2C3
匹配 ac 的 a
'abac'.match( /a(?=c)/ ) // ["a", index: 2, input: "abac", groups: undefined]
匹配 除 ac 的 a 以外 的 a
'abac'.match(/a(?!c)/ ) // ["a", index: 0, input: "abac", groups: undefined]
常用正则
可以跳转到 常用正则私密篇