Regular expressions, and exercises
1. Create a regular expression
1.1 Use the constructor to create
var re = new RegExp("正则表达式","匹配模式");
i:忽略大小写,
g:全局匹配模式
m:多行匹配
test()
-使用这个方法可以用来检查一个字符串是否符合正则表达式的规则,
如果符合则返回true,
否则返回false
var reg2 = new RegExp("a","i");
console.log(reg2.test("Asssshjk"));
1.2 Use literals to create a regular expression
var reg4 = /a/i
使用字面量的方式创建更加简单
使用构造函数创建更加灵活
2. Matching rules
* 1. | 表示或
* 2. [] 中括号里也是或的关系 [ab] == a|b;
* 3. [a-z] 任意小写字母
* 4. [A-z] 任意字母
* 5. [^ ] 除了***以外
* 6. [0-9] 任意数字
* 7. . 查找单个字符,除了换行和行结束符
*
* 8. \w 任意字母数字下划线
* 9. \W 除了字母数字下划线
* 10. \d [0-9]
* 11. \D [^0-9]
* 12. \s 空格
* 13. \S 除了空格
*
* 14. \b 单词边界
* 15. \B 除了单词边界
*
*
* 1. /ab{
1,3}/ :出现一次到三次
* 2. /ab{
3}/ :出现三次
* 3. /(ab){
3}/ :ab一起出现三次
* 4. /{
m,}/ :出现m次以上.
* 5. + :至少一个
* 6. * :0个或多个
* 7. ? :0个或一个
* 8. ^ :以***开头,他和[]里的^不一样
* 9. $ :以***结尾
*
* 查找.和/的话需要/进行转义
*
var reg = /a[bde]c/i;
console.log(reg.test("abc"));
3. Matching method
1.match()
2.search()
3.replace()
4.split()
1.match()
-可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
-默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
他会将结果封装到一个数组里面
var str3 = "aBcd125efgh1ijk4561lmnopqrst145uvwxyz";
var res3 = str3.match(/[A-z]/gi);
console.log(res3);
2.search()
* -搜索字符串中是否含有“***”
* -与split()相同的是他可以传一个正则表达式进去
* search():不能全局匹配,哪怕你指定全局匹配,依然没什么卵用,他只匹配第一个
var str2 = "abc def ghi jjk";
var res2 = str2.search(/g[hjkl]i/);
console.log(res2);
3.replace()
-可以将字符串中指定内容替换为新的内容
-参数:
1.被替换的内容
2.新的内容
4.split()
-可以将一个字符串拆分为一个数组
-方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串
var str = "1a2b3c4d5e6f7";
var res = str.split(/[a-z]/i);
console.log(res);
var reg5 = /^a$/;
console.log(reg5.test("aaa"));
console.log(reg5.test("a"));
var reg7 = /\//ig;
console.log("***"+reg7.test("/"));
4. Practice
4.1 Identify mobile phone number
var reg6 = /^1[34578][0-9]{9}$/
var num = 13456524623;
console.log(reg6.test(num))
4.2 Match the word child
var regg = /\bchild\b/;
console.log(regg.test("hello child"));
4.3 Remove the spaces in the string
var str = " hell oo i ";
str = str.replace(/^\s*/,"");
str = str.replace(/\s*$/,"");
str = str.replace(/^\s*|\s*$/g,"");
console.log(str);
4.4 matching mailbox
官方
hello.nihao@qq.com.cn
任意字母数字下划线 . 任意字母数字下划线 @ 字母数字 . 字母{
2,5}位 .字母{
2,5}
\w{
3,} (\.\w+)* @ [A-z0-9]+ (\.[A-z]{
2,5}){
1,2}
var regt2 = /^\w{3,}(\.\w+)*@[A-z0-9]+(\.[A-z]{2,5}){1,2}$/gi;
console.log(regt2.test("[email protected]"));