/**
* 正则表达式
*/
// 创建 正则表达式的对象
/**
* 语法
* var 变量 = new RegExp("正则表达式","匹配模式")
* var reg = new RegExp("a"); 检查字符串是否 含有 a
* 在 构造函数中 可以传递一个匹配模式 作为 第二个参数
* 可以是
* i 忽略大小写
* g 全局匹配模式
*/
// var reg = new RegExp("a","i");
// var str = "a"
/**
* 正则表达式的方法
* 符合返回 true 否则返回 false
*
*/
// var result = reg.test(str)
// console.log(result);
// reg = /a/i;
// console.log(typeof reg); // object
// console.log(reg.test("abc")); // true
// 创建一个正则表达式 检查一个字符串中是否 有a或b
// reg = /a|b/;
/**
* [] 里的内容也是 或的关系
* [ab] == a|b
* [z-a] 任意小写字母
* [A-Z] 任意大写字母
* [0-9] 任意数字
*
* */
// reg = /[ab]/
// 检查一个字符串 是否 含有 abc 或 adc 或aec
// reg = /abc|adc|aec/
// reg = /a[bde]c/
/**
* [^] 除了
// */
// reg = /[^ab]/
// reg = /[^0-9]/;
// console.log(reg.test("23e23"));
// -------------------------------------------------
// 字符串和 正则相关的方法
// var str = ‘1a2b3c4d5e6f7‘;
/**
* split() 可以将一个字符串拆分为一个数组
* 方法中可以传递一个正则表达式作为 参数 这样方法将会根据正则表达式去拆分字符串
*/
// var result = str.split("c");
// console.log(result); //["1a2b3", "4d5e6f"]
/**
* 根据任意字母来将字符串拆分
* */
// var result = str.split(/[A-z]/);
// console.log(result); // ["1", "2", "3", "4", "5", "6", "7"]
/**
* search()
* 可以搜索字符串中是否含有指定内容
* 如果搜索到指定内容 则会返回第一次出现的索引,如果没有搜到 则 返回 -1
* 它可以接受一个正则表达式作为参数 然后会根据正则表达式去检索字符串
* */
// str = "hello abc hello abc aec afc";
/**
* 搜索字符串中是否含有 abc 或 aec 或 afc
*/
// result = str.search(/a[bef]c/);
// console.log(result);
/**
* match()
* 可以根据正则表达式, 从一个字符串中 将符合条件的内容 提取出来
* 默认情况下 只会找到第一个 符合要求的内容 找到以后就停止检索
* 可以设置正则表达式为全局匹配模式 这样就会匹配到所有的内容
* 可以为一个正则表达式设置多个匹配模式 且顺序无所谓
* match() 会将匹配到的内容封装到一个数 组中返回 即使只查询到一个结果
*/
// str = "1a2b3c4d5e6f7A8B9C";
// result = str.match(/[a-z]/ig);
// console.log(result); // ["a", "b", "c", "d", "e", "f", "A", "B", "C"]
/**
* replace()
* 可以将 字符串中指定内容 替换为 新的内容
* 参数:
* 1 被替换的内容, 可以接受 一个 正则表达式作为参数
* 2 新的内容
* 默认只会替换第一个
*/
// str = "1a2b3c4d5e6f7A8B9Ca";
// result = str.replace("a","@_@");
// console.log(result); //1@_@2b3c4d5e6f7A8B9Ca
// result = str.replace(/a/g,"@_@");
// console.log(result); // 1@_@2b3c4d5e6f7A8B9C@_@
// result = str.replace(/a/ig,"@_@");
// console.log(result); // 1@_@2b3c4d5e6f7@_@8B9C@_@
// result = str.replace(/[a-z]/ig,"@_@");
// console.log(result); // 1@_@2@_@3@_@4@_@5@_@6@_@7@_@8@_@9@_@@_@
// result = str.replace(/[a-z]/ig,"");
// console.log(result); // 123456789
/**
* 量词
* -通过量词可以设置一个内容出现的次数
* - 量词只对 它前边一个内容起作用
* -{n} 正好出现 n 次
* -{m,n} 出现 m-n 次
* -{m,} 出现 m次以上
* + 最少1次, 相当于 {1,}
* * 0或多个, 相当于 {0,}
* ? 0或1个, 相当于 {0,1}
*/
// var reg = /a{3}/;
// console.log(reg.test("aaabc")); // true
// var reg = /ab{3}/; // 只对b 起作用
// console.log(reg.test("aaabbbbc")); // true
// var reg = /(ab){3}/; // ab 连续3次
// console.log(reg.test("aaabababc")); // true
// var reg = /ab{1,3}c/; // 1-3次
// console.log(reg.test("abbbbc"));
// var reg = /ab+c/; // + 最少1次
// console.log(reg.test("abbbbc"));
// var reg = /ab*c/; // * 0或多个
// console.log(reg.test("abbbbc"));
// var reg = /ab?c/; // ? 0或1个
// console.log(reg.test("ac"));
/**
* 检查一个字符串是否以a 开头
* ^ 表示开头
* $ 表示结尾
* */
// reg = /^a/; // 匹配开头的a
// reg = /a$/; // 匹配结尾的a
// console.log(reg.test(‘fdfdaaadfdfda‘));
// /**
// * 如果正则表达式中 同时使用 ^ $ 则要求 字符串必须完全符合 正则表达式
// * /
// reg = /^a$/;
// console.log(reg.test(‘aa‘));
/**
* 创建一个 正则表达式 检查一个字符串 是否是一个合法手机号
* 1 3 522679763
* 1. 以 1 开头
* 2. 第二位是 3-9
* 3 三位任意数字 9个
* ^1 [3-9] [0-9]{9}$
* */
// var phoneStr = ‘13522679763‘
// phoneReg = /^1[3-9][0-9]{9}$/;
// console.log(phoneReg.test(phoneStr));
/**
* 检查一个字符串是否含有 .
* . 表示任意字符
* 在正则表达式中 \ 作为转义字符
* \. 来表示 .
* \\ 表示 \
*/
// var reg = /./;
// var reg = /\./;
// console.log(reg.test("dfs.dfsd"));
/**
* \w 任意 字母/数字/ _ [A-z0-9_]
* \W 除了 字母/数字/ _ [^A-z0-9]
* \d 任意的数字[0-9]
* \D 除了数字[^0-9]
* \s 空格
* \S 除了空格
* \b 单词边界
* \B 除了单词边界
*/
// reg = /\w/
// reg = /\W/
// console.log(reg.test(‘e‘));
/**
* 创建一个正则表达式 检查一个字符串是否含有单词 child
*/
// reg = /\bchild\b/;
// console.log(reg.test(‘hello children‘)); // false
// console.log(reg.test(‘hello child ren‘)); // true