正则的笔记一

在线测试正则的网址:https://regexr-cn.com/
https://codejiaonang.com/#/course/regex_chapter1/0/0
https://c.runoob.com/front-end/854
https://denghao.me/special/regs/demo.html
() 小括号 分组
[] 中括号字符范围
{2,3} 位数大括号范围

  1. 字符类
    1.1 字符集 [abc] // 等于(a|b|c)
    1.2 非集 [^abc]
    1.3 范围 [g-s]
    1.4 点 . // 匹配除换行符之外的任何字符。 等价于 [^\n\r].
    1.5 单词 \w
    1.6 非单词 \W
    1.7 数字 \d
    1.8 非数字 \D
    1.9 空白字符 \s
    1.10 非空白字符 \S

  2. 锚定(字符串范围)
    2.1 开头 ^
    2.2 结尾 $
    2.3 词边界 \b (匹配一个单词边界,也就是指单词和空格间的位置)
    在这里插入图片描述

2.4 非词边界 \B
匹配不是空格

4.b分组&引用
4.1 捕获分组 (ABC)
把多个标记分在同一组并创建一个捕获分组,用来创建子串或引用。
4.2 数字引用 \1
匹配捕获分组的结果。例如,\1 匹配第一个捕获分组的结果,\3 则匹配第三个结果。在vscode中用$1代替
4.3非捕获分组 (?:ABC)
这时就不能用 \1,用于跳过本次分组

5.前后查找
5.1正向先行断言 (?=abc)
匹配主表达式后面的组而不将其包含在结果中。
在这里插入图片描述
5.2负向先行断言 (?!abc)
在这里插入图片描述
在这里插入图片描述

  1. 量词
    6.1 + {1,} // 1到无穷
    6.2 * {0,} //匹配0个或更多前面的标记
    6.3 {1,3} // 位数大括号范围
    6.4 ? {0,1} // 可有可无,匹配前面的标记
    在这里插入图片描述

6.5 | // 多选,或者。匹配前面的或者后面的表达式
在这里插入图片描述
7. 替换
7.1 匹配 $&
7.2 捕获分组 $1
7.3 匹配之前 $`
7.4 之后匹配 ′ 7.5 转 义 ' 7.5 转义 7.5 $$
7.6 转义字符 \n

8.标识 (/igmuy,放在最后面)
8.1 忽略大小写 i
8.2 全局搜索 /g
8.3 多行 /m
8.4 unicode /u
当启用Unicode标识时,你可以按\x{FFFFF}格式转义Unicode字符。
8.5 粘连 /y


应用场景
<[^<>]+>
获取html中的文字,剔除dom元素

例如座机判断:
(0\d{2,3}-)?[1-9]\d{6,7}(-\d{1,5})
(0\d{2,3}-) 区号判断
[1-9]\d{6,7} 中间7-8位数,不能以0开头
(-\d{1,5}) 分机号1-5位
010-82343433

//检查mail邮箱
funtin ismail(str){
var rg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/;
return rg.test(str);
}
//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串

funtin isRgistrUsrNam(s)
{
var patrn=/1{1}([a-zA-Z0-9]|[._]){4,19}KaTeX parse error: Expected 'EOF', got '}' at position 45: …ls return true }̲ //校验用户姓名:只能输入1…/; if (!patrn.x(s)) rturn fals return true } }}
//校验密码:只能输入6-20个字母、数字、下划线
funtin isPassw(s) { var patrn=/^(\w){6,20}KaTeX parse error: Expected 'EOF', got '}' at position 44: …ls return true }̲ //校验普通电话、传真号码:…/; var patrn=/2{0,1}(){1,3}[ ]?([-]?(()|[ ]){1,12})+KaTeX parse error: Expected 'EOF', got '}' at position 46: …s return true }̲ //校验手机号码:必须以数字…/; if (!patrn.x(s)) return fals return true }
//校验邮政编码
funtin isPstal(s)
{ //var patrn=/3{3,12} / ; v a r p a t r n = / [ a − z A − Z 0 − 9 ] 3 , 12 /; var patrn=/^[a-zA-Z0-9 ]{3,12} /;varpatrn=/[azAZ09]3,12/;
if (!patrn.x(s))
return fals return true }
//校验搜索关键字
funtin isSarh(s) {
var patrn=/[~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^~!@ %^&()+=|\\\] [\]\{\}:;'\,.<>?]{0,19} /; if (!patrn.x(s)) rturn fals rturn tru } funtin isIP(s) //by zrgling
{
var patrn=/4{1,20}$/;
if (!patrn.x(s))
return fals return true
}

在 VSCode 中,首先使用 option+command+F(macOS) 或者 Ctrl+H (Windows)打开「查找替换」栏。在第一行「查找」框中输入 \d+,在第二行「替换」框中输入 “$0”,最后点击「替换全部」按钮(在「替换」框右侧的第二个按钮),所有操作就都完成了。

参考 ? Visual Studio 中的正则表达式

.head(.)id
(.
) 是正则
在这里插入图片描述

  • 替换

原代码:v1/users/(.*).’/addresses’

现代码:v3/users/addresses/all?user_id=$1

其中$1即为匹配到的(.*)的部分
在这里插入图片描述
匹配十六进制颜色,例如(#dfd23d)
#[0-9A-F]{6} #[\dA-F]{6}

匹配ip
(\d{1,3})(.\d{1,3}){3}

匹配var 开头的字段
(?<=var\s).*

匹配引号中间的字段
“[^”]+" == “.*?”// 懒惰模式
取后面引号最短距离
在这里插入图片描述

(value = ")([/a-z]*)

(.?) // 查找括号内容,?是判断如果括号内为0位
e.
?e // 两个e中间可以为空
e.+?e // 两个e中间至少有一位字符
e.+e // 最远距离的2个e

JS之 正则表达式的三大用途
1.测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。
//密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
var pPattern = /^.(?=.{6,})(?=.\d)(?=.[A-Z])(?=.[a-z])(?=.*[!@# %^&*? ]).* /;
//输出 true
console.log(pPattern.test(“caibaojian#”));

2.替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
str.replace(reg, ‘要替换的’)

3.根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。
match()

  • 语法
    1、 arr[n] = str.match(reg); 或者 arr[n] = reg.exec(str);
    返回的匹配数组arr[n]中,arr[0]表示整个匹配,arr[1],arr[2]…分别表示各个分组的匹配结果

2、str.replace(reg, ‘要替换的内容’),选择你不要的部分,替换掉
千分号
(function qianfen(str){
return str.replace(/(\d)(?=(\d{3})+$)/g,’$1,’)
})(‘1234567890’)
// 1,234,567,890

‘1234567890’.replace(/(\d)(?=(\d{3})+$)/g,’$1,’)


  1. a-zA-Z ↩︎

  2. + ↩︎

  3. a-zA-Z0-9 ↩︎

  4. 0-9. ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端段

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值