1.正则// 或 RegExp
(1)str.match(/查找匹配的字符串/gi)—匹配值数组
元字符:
(1).表示匹配任意字符单个字符
(2)\w 匹配任意字母、数字、下划线
\W 匹配非字母、非数字、非下划线
(3)\d 数字
\D 非数字
(4) \s 空白
\S 非空白
(5) \b 匹配单词边界
\B 非单词边界
方括号:
(1)[^abc]–排除啊a、b、c
修饰符
i大小写
g 全局匹配
m 执行多行识别匹配(\n\t换行)
捕获和反向引用
(?:正则)此小括号禁止引用,下标跳过,加入全局g,则不输出自表达式
匹配中文
(1)js
[\u4E00-\u9FA5]
(2)php
环视
(1) /a(?=b)/g 查找紧跟b的a
(2)/a(?!b)/g 查找后面不能紧跟b的a
限定:
(3)/(?!b)[a-z]/排除(?!b)匹配[-za-z]
正则的属性和方法
(1)test 检索是否存在匹配
(2)exec,只匹一次检索值返回值和位置的数组,lastIndex到下一次匹配位置
search
str.search(RegExp/g)//–返回定义一个匹配值下标,无则返回-1
match
str.match(RegExp/g)//–匹配值数组
split正则分割
replace
str.replace(RegExp,替换的新内容)
处理结巴程序
常用正则判断
var regBox = {
regEmail: /^([a-z0-9_.-]+)@([\da-z.-]+).([a-z.]{2,6})KaTeX parse error: Undefined control sequence: \d at position 33: …e: /^1[3456789]\̲d̲{9}/, //手机
regTel: /^\d{3,4}-\d{7,8}KaTeX parse error: Undefined control sequence: \d at position 29: …Idcard: /^[1-9]\̲d̲{5}(18|19|([23]…/, //18位身份证验证
repostInt: /^\d+ / , / / 正 整 数 + 0 r e p p o s t I n t : / [ 0 − 9 ] ∗ [ 1 − 9 ] [ 0 − 9 ] ∗ /, //正整数+0 reppostInt: /^[0-9]*[1-9][0-9]* /,//正整数+0reppostInt:/[0−9]∗[1−9][0−9]∗/, //正整数
redata: /^([1-9]{1}\d{0,3})(-|/)((1[0-2])|(0[1-9]))(-|/)((0[1-9])|([1-2]\d{1})|(3[0-1]))KaTeX parse error: Undefined control sequence: \d at position 62: …([1-2][0-4])|(0\̲d̲))(:)([0-5]\d)\…/, //时间校验正则 HH:mm:ss
reDTime: /^(\d{1,4})(-|/)(\d{1,2})\2(\d{1,2}) (\d{1,2})😦\d{1,2})😦\d{1,2})KaTeX parse error: Undefined control sequence: \d at position 14: /, remun: /^\̲d̲{11}/
}
regBox.remun.test(str);
例子:
export function parseJson(jsonObj,oldStr,newStr) {
// 循环所有键
for (var v in jsonObj) {
var element = jsonObj[v];
// 1.判断是对象或者数组
if (typeof element == “object”) {
parseJson(element, oldStr, newStr);
} else if(typeof element == “string”) {
if (element.includes(oldStr)) {
const key = new RegExp(oldStr, “g”);
jsonObj[v] = element.replace(key, newStr);
}
}
}
}