写一个与正则有关的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