js正则表达式
这是关于js的正则表达式的介绍性质的代码,我还写了一片正则表达式的应用的文章,学会了的同学可以看一看。js正则表达式实战。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<!--
正则的用处:
检验一个字符串是否符合规则
获取字符串中符合规则的内容
-->
<script>
/*
一:创建正则表达式的对象
语法:
1. RegExp 对象创建: var 变量 = new RegExp("正则表达式","匹配模式");
2. 使用字面量创建正则表达式: var 变量 = /正则表达式/匹配模式
二:使用typeof检查正则对象,会返回object
三:匹配模式:(一个正则表达式可以有多个匹配模式)(省略匹配模式则默认不忽略大小写不全局匹配)
i : 忽略大小写(正则匹配时不考虑大小写的区别)
g : 全局匹配(不会匹配到了一个就不往下继续匹配了)
m : 执行多匹配
*/
var reg = new RegExp("a","i"); //匹配 a ;
var reg2 = /a/i;
/*
测试内容是否与正则表达式匹配的的方法:
test()
--检查一个字符串是否符合正则表达式的规则,如果符合则返回true,否则返回false
exec()
--检查一个字符串是否符合正则表达式的规则,该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
*/
console.log('----- 测试方法 -----');
var str = "a";
var result = reg.test(str);
console.log(result); // true;
var result = reg.exec(str);
console.log(result); // 返回数组 Array["a"];
/*
方括号:用于查找某个范围内的字符
*/
console.log('----- 方括号 -----');
// 1. ab 必须有 ab
reg = /ab/;
console.log("--- 1 ---");
console.log(reg.test("abcd")); // true
console.log(reg.test("bacd")); // false
// 2. a|b 有a或b
reg = /a|b/;
console.log("--- 2 ---");
console.log(reg.test("cd")); // false
console.log(reg.test("acd")); // true
console.log(reg.test("bcd")); // true
console.log(reg.test("bacd")); // true
// 3. [a-d] a到d的任意字母
reg1 = /[a-z]/; //存在任意小写字母
reg2 = /[A-Z]/; //存在任意大写字母
reg3 = /[A-z]/; //存在任意字母
console.log("--- 3 ---");
console.log(reg1.test("12ab")); // true
console.log(reg2.test("12AB")); // true
console.log(reg3.test("12Ab")); // true
console.log(reg3.test("12")); // false
// 4. /a[bde]c/
reg = /a[bde]c/; // 需要有 abc或adc或aec,此时括号内的字母必须只有一个
console.log("--- 4 ---");
console.log(reg.test("abc")); // true
console.log(reg.test("abdc")); // false
console.log(reg.test("cabc")); // true
console.log(reg.test("ac")); // false
// 5. [^ab] 除了ab以外的东西
reg = /[^ab]/ //存在除了ab以外的字符
console.log("--- 5 ---");
console.log(reg.test("abc")); // true
console.log(reg.test("ab")); // false
console.log(reg.test("c")); // true
// 6. [^0-9] 存在不是数字的字符
reg = /[^0-9]/;
console.log("--- 6 ---");
console.log(reg.test("12")); // false
console.log(reg.test("as12")); // true
console.log(reg.test("ac")); // true
/*
元字符:拥有特殊含义的字符
*/
console.log('----- 元字符 -----');
// . 查找单个字符,除了换行和行结束符
var str = 'that is hot!';
var reg = /h.t/g;
console.log(str.match(reg)); // Array['hat','hot'];
// \w 查找单词字符,包括a-z,A-Z,0-9,以及下划线_
var str = "give m_e 10%!";
var reg = /\w/g;
console.log(str.match(reg)); // Array(10) [ "g", "i", "v", "e", "m", "_", "e", "1", "0" ]
// \W 查找非单词字符
var str = "give m_e 10%!";
var reg = /\W/g;
console.log(str.match(reg)); // Array(4) [ " ", " ", "%", "!" ]
// \d 查找数字
var str = "give m_e 10%!";
var reg = /\d/g;
console.log(str.match(reg)); // Array [ "1", "0" ]
// \D 查找非数字字符
var str = "give m_e 10%!";
var reg = /\D/g;
console.log(str.match(reg)); // Array(11) [ "g", "i", "v", "e", " ", "m", "_", "e", " ", "%", … ]
// \s 查找空白字符
var str = "give m_e 10%!";
var reg = /\s/g;
console.log(str.match(reg)); // Array [ " ", " " ]
// \S 查找非空白字符
var str = "give m_e 10%!";
var reg = /\S/g;
console.log(str.match(reg)); // Array(11) [ "g", "i", "v", "e", "m", "_", "e", "1", "0", "%", … ]
// \b 匹配单词边界 : \b 元字符通常用于查找位于单词的开头或结尾的匹配。
var str = "give m_e 10%!";
var reg = /\bgi/g;
console.log(str.match(reg)); // Array["gi"]
var reg = /ve\b/g;
console.log(str.match(reg)); // Array["ve"]
var reg = /v\b/g;
console.log(str.match(reg)); // null
// \B 匹配非单词边界:匹配位置的上一个和下一个字符的类型是相同的:即必须同时是单词,或必须同时是非单词字符。字符串的开头和结尾处被视为非单词字符。
var str = "give very";
var reg = /\Bve/g; // 匹配不处于单词开头的ve
console.log(str.match(reg)); // Array["ve"]
// \n 查找换行符
var str = "Visit RUNOOB.\n Learn JavaScript";
var reg = /\n/g;
console.log(str.search(reg)); // 13
/*
量词:
*/
console.log('----- 量词 -----');
// n+ 匹配任何包含至少一个 n 的字符串。
var str = "Hellooo World! Hello Runoob!";
var reg = /o+/g;
console.log(str.match(reg)); // Array(4) [ "ooo", "o", "o", "oo" ]
var reg = /\w+/g;
console.log(str.match(reg)); // Array(4) [ "Hellooo", "World", "Hello", "Runoob" ]
// n* 匹配任何包含零个或多个 n 的字符串。
var str = "Hellooo World! Hello W3Schools!";
var reg = /lo*/g; // 对 "l" 进行全局搜索,包括其后紧跟的一个或多个 "o"
console.log(str.match(reg)); // Array(6) [ "l", "looo", "l", "l", "lo", "l" ]
// n? 匹配任何包含零个或一个 n 的字符串。
var str = "1, 100 or 1000?";
var reg = /10?/g;
console.log(str.match(reg)); // Array(3) [ "1", "10", "10" ]
// n{X} 匹配包含 X 个 n 的序列的字符串。X必须是数字
var str = "100, 1000 or 10000?";
var reg = /\d{4}/g; // 对包含四位数字序列的子串进行全局搜索,然后匹配连续的四个数字
console.log(str.match(reg)); // Array [ "1000", "1000" ]
// n{X,} X 是一个正整数。前面的模式 n 连续出现至少 X 次时匹配。
var str = "100, 1000 or 10000?";
var reg = /\d{3,}/g;
console.log(str.match(reg)); // Array(3) [ "100", "1000", "10000" ]
// n{X,Y} X 和 Y 为正整数。前面的模式 n 连续出现至少 X 次,至多 Y 次时匹配。
var str = "100, 1000 or 10000?";
var reg = /\d{3,4}/g;
console.log(str.match(reg)); // Array(3) [ "100", "1000", "1000" ]
// n$ 匹配任何结尾为 n 的字符串。
var str = "isme this his";
var reg = /is$/g;
console.log(str.match(reg)); // Array [ "is" ]
// ^n 匹配任何开头为 n 的字符串。
var str = "isme this his";
var reg = /^is/g;
console.log(str.match(reg)); // Array [ "is" ]
// ?=n 匹配任何其后紧接指定字符串 n 的字符串。
var str = "Is this all there is";
var reg = /is(?= all)/; // 对其后紧跟 "all" 的 "is" 进行全局搜索
console.log(str.match(reg)); // Array [ "is" ]
// ?!n 匹配任何其后没有紧接指定字符串 n 的字符串。
var str = "Is this all there is";
var reg = /is(?! all)/gi;
console.log(str.match(reg)); // Array [ "Is", "is" ]
/*
正则方法:
split() 可以将一个字符串拆分为一个数组
search() 搜索字符串中是否含有指定内容
match() 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
replace("被替换的内容","新的内容") 将字符串指定内容替换为新的内容
*/
console.log('----- 正则方法 -----');
// 1. split() 传递常量则按常量拆,传递正则表达式则按正则表达式拆
console.log("--- split() ---");
var str = "1a2b3c4d5e6f";
var result = str.split("c");
console.log(result); // Array["1a2b3","4d5e6f"] 注意:C被去掉了
var result = str.split(/[a-z]/); //按字母拆
console.log(result); // Array(7) {"1","2","3","4","5","6",""};
var str = "10101010101";
var result = str.split(1); //无需设置全局匹配即可拆所有的指定字符
console.log(result); // Array(7) {"","0","0","0","0","0",""};
// 2. search() 搜索字符串中是否含有指定内容,如果搜索到指定内容,则返回第一次出现的内容,没搜索到就返回-1
console.log("--- search() ---");
str = "hello abc hello abc";
result = str.search("abc");
console.log(result); // 6
str = "hello abc hello aec afc";
result = str.search(/a[bef]c/); // 搜索是否含有abc或aec或afc
console.log(result); // 6
// 3. match() 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
console.log("--- match() ---");
var str = "1a2b3c4d5e6f";
result = str.match(/[A-z]/); // 提取其中符合条件的第一个英文字母
console.log(result); // Array["a"]
result = str.match(/[A-z]/g); // 提取其中符合条件的所有英文字母 :全局匹配
console.log(result); // Array["a","b","c","d","e","f"]
console.log(Array.isArray(result)); // true
console.log(result[1]); // b
// 4. replace("被替换的内容","新的内容") 将字符串指定内容替换为新的内容
console.log("--- replace() ---");
var str = "1a2b111ABC";
result = str.replace("1a2b", "0");
console.log(result); // 0111ABC
result = str.replace(/a/gi, "0");
console.log(result); // 102b1110BC
</script>
</body>
</html>
更多相关内容大家可以前往我的个人博客浏览:eyes++的个人空间