当前位置:网站首页>JS10day(api 阶段性完结,正则表达式简介,自定义属性,过滤敏感词案例,注册模块验证案例)
JS10day(api 阶段性完结,正则表达式简介,自定义属性,过滤敏感词案例,注册模块验证案例)
2022-07-02 09:43:00 【荻风溪畔】
文章目录
正则表达式
不是第一次接触正则表达式了,看来它的应用还是挺广泛的,之前在爬虫就用到很多正则表达式。
上菜鸟链接,有需求,cv它写好的https://c.runoob.com/front-end/854/
先看看在JS中它的语法:
1. 定义正则表达式语法:
let 变量名=/表达式/
其中 / / 是正则表达式字面量(也就是说这个变量名是一个对象,可以通过.来调用方法)
- 比如:
let reg=/前端/
2.判断是否有符合规则的字符串:
test() 方法 用来查看正则表达式与指定的字符串是否匹配
- 示例:
let reg = /java/
let str = '我们 不是和ewqjava'
console.log(reg.test(str)) //true
- 如果正则表达式与指定的字符串匹配 ,返回
true,否则false
3.检索(查找)符合规则的字符串:
exec() 方法 在一个指定字符串中执行一个搜索匹配
- 示例:
// 定义正则表达式 reg 里面存的是对象
let reg = /前端/
let str = '我们大家都在学前端'
// 检索 exec()
console.log(reg.exec(str)) // 返回的是数组
- 如果匹配成功,
exec()方法返回一个数组,否则返回null
元字符:
为了方便记忆和学习,对众多的元字符进行了分类:
- 边界符(表示位置,开头和结尾,必须用什么开头,用什么结尾)
- 量词 (表示重复次数)
- 字符类 (比如 \d 表示 0~9)
参考文档:
- MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions
- 正则测试工具: http://tool.oschina.net/regex
1. 边界符:
正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符。
| 边界符 | 说明 |
|---|---|
| ^ | 表示匹配行首的文本(以谁开始) |
| $ | 表示匹配行尾的文本(以谁结束) |
如果 ^ 和 $ 在一起,表示必须是精确匹配。
示例:
console.log(/^哈$/.test('我开心的哈哈大笑')) // false
console.log(/^哈$/.test('哈哈')) // false
console.log(/^哈$/.test('哈')) // true 精确匹配
2. 量词 (表示重复次数)


3. 字符类:
(1) [ ] 匹配字符集合 (单个的[ ]只匹配一个字符,想匹配多个要加上{n,m})
- 后面的字符串只要包含
abc中任意一个字符,都返回true。
(2) [ ] 里面加上 - 连字符
使用连字符 - 表示一个范围
比如:[a-z] 表示 a 到 z 26个英文字母都可以[a-zA-Z] 表示大小写都可以[0-9] 表示 0~9 的数字都可以
示例:
腾讯QQ号:^[1-9][0-9]{
4,}$ (腾讯QQ号从10000开始,[1-9]匹配开头数字,[0-9]{
4,}匹配4位数及以上0~9的数字)
(3) [ ] 里面加上 ^ 取反符号
- 比如:
[^a-z]匹配除了小写字母以外的字符(注意要写到中括号里面)
(4) . 匹配除换行符之外的任何单个字符
(5) 预定义:指的是某些常见模式的简写方式。
日期格式:^\d{
4}-\d{
1,2}-\d{
1,2}
4 修饰符
修饰符约束正则执行的某些细节行为,如是否区分大小写、是否支持多行匹配等
语法:
/表达式/修饰符
i 是单词 ignore 的缩写,正则匹配时字母不区分大小写g 是单词 global 的缩写,匹配所有满足正则表达式的结果
示例:
console.log(/a/i.test('a')) //true
console.log(/a/i.test('A')) //true
替换 replace 替换
语法:
字符串.replace(/正则表达式/,'替换的文本')
示例:
console.log('蓝天a白云黑土a逮a虾户a'.replace(/a/g, '')) //蓝天白云黑土逮虾户
自定义属性
固有属性:
标签天生自带的属性 比如classidtitle等, 可以直接使用点语法操作。
自定义属性:
由程序员自己添加的属性,在DOM对象中找不到, 无法使用点语法操作,必须使用专门的API
getAttribute('属性名') // 获取自定义属性
setAttribute('属性名', '属性值') // 设置自定义属性
removeAttribute('属性名') // 删除自定义属性
data-自定义属性:
传统的自定义属性没有专门的定义规则,开发者随意定值,不够规范,所以在html5中推出来了专门的data-自定义属性 在标签上一律以data-开头
在DOM对象上一律以dataset对象方式获取
<body>
<div class="box" data-index="0" data-name="andy"></div>
<script>
// 设置自定义属性
let box = document.querySelector('.box')
box.setAttribute('data-id', 20)
box.setAttribute('data-name', 10)
console.log(box.getAttribute('data-id')) //20
console.log(box.dataset) //DOMStringMap对象 {index: '0', name: '10', id: '20'}
console.log(box.dataset.index) //属性值 0
box.removeAttribute('data-name') //删除属性
console.log(box.dataset) //DOMStringMap 对象{index: '0', id: '20'}
</script>
</body>

过滤敏感词案例
/^[\u4e00-\u9fa5]{2,8}$/ //unicode匹配2~8个中文

在文本框中输入,按下Enter或者点击发布都能输出:body代码如下:
<body>
<textarea name="" id="" cols="30" rows="10"></textarea>
<button>发布</button>
<div></div>
<script>
let btn = document.querySelector('button')
let textarea = document.querySelector('textarea')
let div = document.querySelector('div')
//监听点击事件
btn.addEventListener('click', function () {
// 过滤用户输入的内容
div.innerHTML = textarea.value.replace(/激情|基情/g, '**')
// div.innerHTML = textarea.value
})
//监听enter键按下事件
textarea.addEventListener('keydown', function (e) {
// 过滤用户输入的内容
if (e.key == 'Enter') {
div.innerHTML = textarea.value.replace(/激情|基情/g, '**')
}
})
</script>
</body>
注册模块验证案例
边栏推荐
- Distributed machine learning framework and high-dimensional real-time recommendation system
- ThreadLocal的简单理解
- Sub thread get request
- Post request body content cannot be retrieved repeatedly
- CDA data analysis -- common knowledge points induction of Excel data processing
- bellman-ford AcWing 853. 有边数限制的最短路
- 线性DP AcWing 898. 数字三角形
- 2.6 using recursion and stack - [tower of Hanoi problem]
- Less than three months after the programmer was hired, the boss wanted to launch the app within one month. If he was dissatisfied, he was dismissed immediately
- 浏览器存储方案
猜你喜欢

The differences and relationships among port, targetport, nodeport and containerport in kubenetes

In development, why do you find someone who is paid more than you but doesn't write any code?

"As a junior college student, I found out how difficult it is to counter attack after graduation."

线性DP AcWing 897. 最长公共子序列

Embedded Software Engineer career planning

Enhance network security of kubernetes with cilium

Initial JDBC programming

计数类DP AcWing 900. 整数划分

BOM DOM
![[old horse of industrial control] detailed explanation of Siemens PLC TCP protocol](/img/13/9002244555ebe8a61660c2506993fa.png)
[old horse of industrial control] detailed explanation of Siemens PLC TCP protocol
随机推荐
"As a junior college student, I found out how difficult it is to counter attack after graduation."
SparkContext: Error initializing SparkContext解决方法
区间DP AcWing 282. 石子合并
单指令多数据SIMD的SSE/AVX指令集和API
drools决策表的简单使用
The second composition template of postgraduate entrance examination English / chart composition, English chart composition is enough
Does C language srand need to reseed? Should srand be placed in the loop? Pseudo random function Rand
Fluent fluent library encapsulation
浏览器存储方案
Drools executes string rules or executes a rule file
Post request body content cannot be retrieved repeatedly
Use sqoop to export ads layer data to MySQL
堆 AcWing 838. 堆排序
Lombok common annotations
AI mid stage technology research
Error in kubeadm join: [error port-10250]: port 10250 is in use [error fileavailable--etc kubernetes PKI
Sweetheart leader: Wang Xinling
How to write a pleasing English mathematical paper
BOM DOM
When uploading a file, the server reports an error: iofileuploadexception: processing of multipart / form data request failed There is no space on the device