【JavaScript】学习第十五天(正则表达式)

本文详细介绍了JavaScript中的正则表达式,包括正则概念、创建方式、元字符、限定符、边界符、特殊符号等内容,并给出了多个实际案例,如用户名、电话号码、身份证号码和邮箱的正则验证。同时,还讲解了字符串与正则相关的replace()、search()和match()方法的用法。

正则表达式

1.正则的概念:

用于匹配一个字符串满足某种规则(即正则表达式)

2.正则的创建:

var a = /abc/
var a = new RegExp('abc')

3.正则的元字符:

  • \d : 表示一位数字
  • \D :表示一位非数字
  • \w :表示一位数字,字母下划线中的任意一个
  • \W :表示一位非(数字,字母,下划线)中的任意一个
  • \s :匹配空白字符(空格)
  • \S : 非空白
  • . :任意字符(非换行)
  • 如果就指向匹配. 是true
  • \ . :匹配 .
  • \ :匹配 \

4.正则的限定符:

  • *:匹配0次或者多次(出现0次,或者1次,或者多次都)
  • +:匹配1次或者多次
  • ?:匹配0次或者多次
  • {n}:匹配正好n次 a{5}
  • {n,m} :匹配n-m次 {6,8} 匹配 6次,7次,8次都可以
  • {n,} :匹配n次以上

5.正则的边界符:

  • ^:以…开始 ^abc以abc开始
  • $:以…结束 abc $ 以abc结束

6.正则的特殊符号:

1:[0-9]: 匹配[]中的任意一个
2:[^0-9]:  匹配[]中的任意一个非小写字母
3:-: a-z(abc...z)   0-9(0,1,2,3,,,9) A-Z(A,B,C,D。。)
4:():  abc{2}--》c出现2次  (abc){2} (abc)整体出现两次
5:|  或者  a|b  就是a或者b
6:{}: {n}  {n,m}

7.案例:

1、用户名正则:4到16位(字母,数字,下划线,减号)
2、电话号码正则:可以是135,138,158开头
3、身份证号码正则:18位的数字或者17位数字+x
4、 邮箱正则:@前 3到6位数字字母下划线组成的
@后可以 2位小写字母
最后部分是.com或者.com.cn

8.字符串跟正则相关的方法

1:replace():
语法:

str.replace('字符串的字符','替换成谁')
str.replace('正则','替换成谁')
str.replace(/a/;'x')

返回:替换后的新的字符串
语法:将字符串中的字符或者符合正则规则的首个字符,替换成xx
注意:使用时需要加上标识符g进行全局匹配

2:search():
语法:

str.search('字符')
str.search('正则')

含义:在字符串中查找到第一个符合规则的字符下标
找不到就返回-1
返回值:找到元素的下标或者-1
注意:类似于 indexOf

str . indexOf('字符')

3:math():
语法:

 str.match('字符');
str.match('正则');

含义:查找到匹配的正则规则的元素
注意:使用时需要加上表识符 g 进行全局匹配
返回值:是一个数组形式

### Educoder JavaScript 正则表达式学习手册十:关卡代码示例与解决方案 #### 关于正则表达式的综合应用 在 Educoder 平台上的 JavaScript 正则表达式学习手册第十章节中,重点涉及到了正则表达式的高级特性和其实际应用场景。这部分内容通常会通过多个关卡逐步引导用户深入理解如何灵活运用正则表达式解决复杂的字符串匹配问题[^1]。 下面是一个典型的正则表达式练习案例,旨在帮助用户理解和实践正则表达式的功能: ```javascript /// 题目描述:验证电子邮件地址的有效性 /// function validateEmail(email) { const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; // 使用 test() 方法检测输入是否符合邮箱格式 return emailRegex.test(email); } // 示例调用 console.log(validateEmail("example@example.com")); // true console.log(validateEmail("invalid-email@com")); // false ``` 在此代码片段中: - 定义了一个用于校验电子邮箱合法性的正则表达式 `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`。 - 运用了 `RegExp.prototype.test()` 函数来判定所提供的字符串是否满足指定的邮件地址格式要求[^1]。 --- #### 复杂场景下的正则表达式实现 对于更复杂的任务需求,比如去除 HTML 文本中的标签仅保留纯文本内容,可以采用如下方法完成: ```javascript /// 去除HTML标签,只留下纯文本 /// function stripHtmlTags(htmlString) { const tagStripper = /<[^>]*>/g; // 替换掉所有的HTML标签 return htmlString.replace(tagStripper, ''); } // 示例调用 const sampleHtml = "<p>Hello <strong>World</strong>!</p>"; console.log(stripHtmlTags(sampleHtml)); // 输出: Hello World! ``` 这段脚本的关键点在于构建了这样一个正则表达式 `<[^>]*>` ,它能够识别并匹配任何成对出现的大括号及其内部字符序列(即HTML标签),随后借助 String 的 replace 方法将其替换为空字符串从而达到清除目的[^1]。 --- #### 整合多种条件的正则表达式实例 再来看另一个综合性较强的题目——找出一段文字里所有长度超过五个字母的单词,并统计它们的数量: ```javascript /// 查找长度大于五的单词并计数 /// function countLongWords(text) { const wordFinder = /\b[a-z]{6,}\b/gi; let matches = text.match(wordFinder); return matches ? matches.length : 0; } // 示例调用 let paragraph = "This is an example sentence with several longwords."; console.log(countLongWords(paragraph)); // 输出具体数值取决于paragraph内容 ``` 这里采用了正则 `\b[a-z]{6,}\b` 来精准定位至少由六个英文字母组成的独立单词单元,同时设置了标志位 `gi` 表明全局搜索且不区分大小写。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值