JS | 前端正则

🌞 RegExp对象

原生JavaScript中表示正则表达式的对象

1、创建RexExp对象的两种方法

  • 字面量
    var patt = /ab+c/i
    
  • 构造函数
    var patt = new RegExp(/ab+c/, 'i')
    

2、RegExp 对象方法

1) exec

字符串中的正则表达式的匹配

  • 匹配
    var str="Hello world!";
    var patt=/Hello/g;
    var result=patt.exec(str); // Hello 
    
  • 不匹配
    var str="Hello world!";
    var patt=/Hello2/g;
    var result=patt.exec(str); // null
    

2) test

检测一个字符串是否匹配某个模式

  • 匹配
    var str="Hello world!";
    var patt=/Hello/g;
    var result=patt.exec(str); // true
    
  • 不匹配
    var str="Hello world!";
    var patt=/Hello2/g;
    var result=patt.exec(str); // false
    

3、支持正则表达式的 String 对象的方法

1) replace

替换与正则表达式匹配的子串

  • 执行一次替换,直到第一个 "yf" 被找到
    var str = "Visit yf, Visit yf";
    var n = str.replace("yf","ta");   // Visit ta, Visit yf
    
  • 全局替换
    var str = "Visit yf, Visit yf";
    var n = str.replace(/yf/g,"ta");   // Visit ta, Visit ta
    
  • 全局去除对应 '.', '-'字符
    var str = "-2.7";
    var n = str.replace(/\./g, '').replace(/\-/g, '');   // 27
    

查询字符串中指定的或是与正则相匹配的子字符串,返回相匹配的 String 对象起始位置

  • 找到与正则相匹配的字符串
    var str = "Visit yf";
    var n = str.search("yf");   // 6
    
  • 找到指定字符串
    var str = "Visit yf";
    var n= str.search(/yf/);   // 6
    
  • 未找到指定字符串
    var str= "Visit yf";
    var n= str.search("ta");   // -1
    

3) match

找到一个或多个匹配的字串,返回存放匹配结果的数组

  • 找到与正则相匹配的字符串
    var str = "hello world world"; 
    var n = str.match(/world/g); // ['world', 'world']
    
  • 未找到指定字符串
    var str= "hello world world"; 
    var n = str.match(/ahaha/g); // null
    

🌞 正则通用

1、正则匹配常用的规则

常用元字符

\w | 查找数字、字母及下划线。
\d | 查找数字。
\D | 查找非数字字符。
\s | 查找空白字符。
\S | 查找非空白字符。
\0 | 查找 NULL 字符。
\n | 查找换行符。

常用量词

n?      |  零个或一个 n 的字符串
n*      |  零个或多个 n 的字符串
n+      |  至少一个 n 的字符串
n{X}    |  X 个 n 的序列的字符串
n{X,}   |  至少X 个 n 的序列的字符串
n{X,Y}  |  至少X 个, 至多 n 的序列的字符串
n$      |  任何以n结尾的字符串 
^n      |  任何以n开头的字符串 

2、常用正则有哪些

1)最多两位小数

   let reg = /^(([1-9]{1}\d*)|(0{1}))(\.\d{1,2})?$/g
   // reg.test(1)  true
   // reg.test(1.2) true
   // reg.test(1.23) true
   // reg.test(1.234) false