javascript(JS) 0基础快速入门 (九)(正则表达式的使用)

正则表达式

根据正则表达式,来检查一个字符串是否符合规则,

将字符串中符合规则的内容提取出来

创建正则表达式的对象

var XXX = new RegExp(" 正则表达式 “,” 匹配模式 ");

  • 第二个参数
    • i 忽略大小写
    • g 全局匹配模式
var reg = new RegExp (/d/,'g') //  匹配任意数字【0-9】全局匹配

正则表达式的方法

正则的对象 .test(" String ")

var reg = new RegExp (/d/,'g') //  匹配任意数字【0-9】全局匹配
console.log(reg.test('2312Strsds'));  // true

使用这个方法可用来检查一个字符串是否符合正则表达式的规则

  • 如果符合则返回true,否则返回false

使用字面量的方式创建正则表达式

var XXX = /正则表达式/匹配模式

var  reg  = /a/i;  // 忽略大小写匹配 a

使用字面量创建的更加简单

但是使用构造函数创建的会更加灵活

正则表达式的运用

  • / a|b/ 表示a 或者 b
  • 【】里的内容也是或的关系
  • 【ab】 == a | b
  • 【a-z】任意小写字母
  • 【A-Z】任意大写字母
  • 【A-z】任意字母
  • 【^】除了
  • 【0-9】任意数字

正则表达式与字符串的运用

split()

  • 可以将一个字符串拆分为一个数组,并返回

  • 方法中可以传递一个正则表达式作为参数,这样方法会根据正则表达拆分字符串

    var result = str.split( /[A-z]/ );根据任意字母拆分字符串

var reg = /[A-z]/
console.log('23ds23ads15'.split(reg)); //["23", "", "23", "", "", "15"]

若是使用正则包含块,则可以将分割的字符也一起保留

var reg = /([A-z])/  //  用了() 包裹住要保留的分割符
console.log('23ds23ads15'.split(reg)); // ["23", "d", "", "s", "23", "a", "", "d", "", "s", "15"]

search()

  • 可以搜索字符串是否有指定内容
  • 如果搜到则返回第一次出现的索引,没搜到则返回-1
  • search 只会搜第一个,加全局也没用
var reg = /[A-z]/
console.log('23ds23ads15'.search(reg)); // 2

match()

可以根据正则表达式,从一个字符串中将符合条件的内容提取出来

默认情况下match只会找到第一个符合要求的就停下来

  • 但是可以通过设置为全局作用域/g ,这样就会匹配所有符合的内容
  • 可以设置多个匹配模式,顺序随意

match()会将匹配到的内容封装到一个数组中返回,即使之查询到一个结果

//   默认情况下match只会找到第一个符合要求的就停下来
var str = "213213asdasdasd13213";
var result = str.match(/[a-z]/);
console.log(result);  
//["a", index: 6, input: "213213asdasdasd13213", groups: undefined]

设置了全局作用

var str = "213213asdasdasd13213";
var result = str.match(/[a-z]/gi);  //  设置全局匹配,并且忽略大小写
console.log(result); // ["a", "s", "d", "a", "s", "d", "a", "s", "d"]

replace()

可以将字符串中指定内容替换为新的内容

参数1.被替换的内容 2、新的内容

  • 默认替换第一个,
  • 也可以加上 /g 全局替换
var str = "213213asdasdasd13213";
var result = str.replace("a"  ,  "_");
//   213213_sdasdasd13213  只替换一个
var str = "213213asdasdasd13213";
var result = str.replace(/[a-z]/g,  "_");
//  213213_________13213  全部字母替换

正则表达式的语法

量词

通过量词可以设置内容出现的次数

  • { n }正好出现n次
  • {m , n}正好出现m-n次
  • {m, }出现m次以上
  • + 至少一个,相当于{1, }
  • * 0个或多个,相当于{0, }
  • ? 0个或1个,相当于{0 , 1}
//  `+`   至少一个,相当于{1,  }
var str = '123sage235wis'
var reg = /[a-z]+/g   
str.match(reg) //  ["sage", "wis"]

// `*`  0个或多个,相当于{0,  }
var str = '123sage235wis'
var reg = /[a-z]*/g
str.match(reg)  //  ["", "", "", "sage", "", "", "", "wis", ""]

// ?    0个或1个,相当于{0  , 1}
var str = '123sage235wis'
var reg = /[a-z]?/g
 str.match(reg)   //  ["", "", "", "s", "a", "g", "e", "", "", "", "w", "i", "s", ""]

检查一个字符串是否以a开头

  • ^ 表示开头
  • $ 表示结尾

同时用 ^ $ 则表示要完全一样

手机号的规则:1、以1开头,2、第二位3-9任意数,3、三位以后任意数字9个

var phone = /^1[3-9] [0-9] {9}$/   //  以1开头第二位要求[3-9]随后的第三位以后[0-9]{9} 任意9个并且数字结尾

正则表达式语法2

语法缩写

正则表达式中

. 来表示任意字符

\w 任意字母、数字、_ 相当于 [A-z0-9_]

\W 除了字母、数字、_ 相当于 [^A-z0-9_]

\d 任意数字 相当于 [0-9]

\D 除了数字 相当于 [^0-9]

\s 空格 相当于 / /g

var str = '123s age235 wis'
var reg = / /g
str.match(reg)  //  [' ',' ']

\S 除了空格

\b 单词边界

var str = '123s age 235 age22'
var reg = /\bage\b/g
//  ['age']  age22 不会输出因为不符合 单词边界条件

\B 除了单词边界

上一篇:JavaScript基础知识第四章---流程控制


下一篇:java 环境变量配置 详解!