【 JS 】前端正则 (高效速查)

177 阅读2分钟

写一个与正则有关的JS时,每次都是要找好几篇文档才能解决我的问题,下次遇到同样的问题,又得继续同样的步骤。

🌞 先整理归纳JS 中RegExp相关

RegExp对象

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

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

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

2、RegExp 对象方法

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
    

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 对象的方法

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
    

search:查询字符串中指定或是与正则相匹配子字符串,返回相匹配的 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
    

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\d{10}$/

2)中国大陆电话号码

  let reg = /^(0\d{2,3}-?)?(\d{7,8}|(\d{3,4}-?)?\d{7,8})(-\d{1,4})?$/;

3)简单身份证校验

  let reg = /^\d{17}[\dXx]$/;

4)只支持字母与数字

   let reg = /^[a-zA-Z0-9]+$/

5)最多两位小数

   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