正则表达式

本文深入探讨了正则表达式的概念及其在JavaScript中的使用,包括创建正则表达式对象的两种方式、匹配身份证号码和邮箱的正则表达式实例,以及如何通过exec方法提取字符串中的匹配项。通过这些示例,读者可以更好地理解和运用正则表达式进行数据验证和提取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则表达式就是 一个用于查找的 含有 匹配字符串 或 匹配元字符的 字符串。
正则表达式对象 就是 由 正则表达式创建的对象, 该对象可以进行 匹配, 提取 和 替换。

创建正则表达式对象有两种方式:

  1. 构造函数:
 var reg = new RegExp();
 console.dir(reg);

输出结果为:
在这里插入图片描述

  1. 字面量:
// var regex = /正则表达式/;
var reg1 = /heygirl/
console.log(reg1);
var str = '1234679heygirlasdfqwe'
console.log(reg1.test(str));

输出结果为:
在这里插入图片描述

案例:
  1. 写一个正则表达式匹配 身份证号码;
    分析:身份证是 18 位数字;省 市 区 出生年月 随机编码X
    1) 首先是要做匹配, 就一定要使用 ^ $;
    2) 是 18 位数字( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ).。可以使用 [0123456789],还可以使用0|1|2|3|4|5|6|7|8|9;
    3) 要求是 18 位. 限定 18 位, 即 {18}。
//匹配身份证,18位,开头不为0
var reg = /^[1-9][0-9]{16}[0-9X]$/;
var str = '42077719990616772X';
var a = reg.test(str);
console.log(a);
  1. 匹配邮箱;
    分析:名字 @ 主机名
    1) 是要验证邮箱, 那么就需要使用 ^ $;
    2) 名字:数字与字母;
    3) 主机名:主机名也是一串字符串或数字,但是它多了一个 .com .cn
//匹配邮箱
var reg = /^[0-9a-zA-Z]+@[0-9a-zA-Z]+(\.com)$/
var str = '9645@126.com'
var a = reg.test(str);
console.log(a);
  1. 匹配一个指定范围的数字;
    分析:匹配 0 ~ 255 为例
    如果要匹配指定范围的数字, 那么需要将字符串结构进行分类:
    1) 0 要匹配的, 所以在正则表达式中有 0 这一项;
    2) 任意的 2 位数, 即 [1-9][0-9];
    3) 任意的 1 位数, 即 [0-9], 可以将 第 1) 结论合并;
    4) 考虑 3 位数的时候, 只允许出现 1xx 的任意数, 而 2xx 的有限制
    因此在分组, 考虑 1xx 的任意数, 可以写成: 1[0-9][0-9];
    5) 考虑 2xx 的数字, 在 200 到 250 之间允许任意取. 所以写成: 2[0-4][0-9];
    6) 考虑 250 到 255, 写成 25[0-5]。
//随机输出0-255
var reg = /^([0-1]|[0-9][0-9]|2[0-4][0-9]|25[0-5])$/
var str = '56'
var a = reg.test(str);
console.log(a);

提取

使用正则表达式可以进行匹配, 使用 exec 可以将匹配到的数据提取出来。
语法:正则表达式对象.exec( 字符串 ) -> 封装成数组

循环提取在一个字符串中将所有复合的要求的字符串提取出来。
1> 正则表达式需要使用全局模式;

var r = new RegExp( '正则', 'g' );
var r = /正则/g;

2> 调用 exec 首先获得第一个匹配项;再调用一次该方法, 就可以获得 第二个匹配项;一直调用下去, 就可以得到所有的匹配项;直到最后全部匹配完, 如果还用该方法, 则返回 null。

案例

在 ‘abc123def456ghij789klum’ 提取数字。

var str = 'abc123def456ghij789klum';
var reg = /\d+/g;
var arr;
while (arr = reg.exec(str)) {
	console.log(arr);
}
汉字字库存储芯片扩展实验 # 汉字字库存储芯片扩展实验 ## 实验目的 1. 了解汉字字库的存储原理和结构 2. 掌握存储芯片扩展技术 3. 学习如何通过硬件扩展实现大容量汉字字库存储 ## 实验原理 ### 汉字字库存储基础 - 汉字通常采用点阵方式存储(如16×16、224、32×32点阵) - 每个汉字需要占用32字节(16×16)到128字节(32×32)不等的存储空间 - 国标GB2312-80包含6763个汉字,需要较大存储容量 ### 存储芯片扩展方法 1. **位扩展**:增加数据总线宽度 2. **字扩展**:增加存储单元数量 3. **混合扩展**:同时进行位扩展和字扩展 ## 实验设备 - 单片机开发板(如STC89C52) - 存储芯片(如27C256、29C040等) - 逻辑门电路芯片(如74HC138、74HC373等) - 示波器、万用表等测试设备 - 连接线若干 ## 实验步骤 ### 1. 单芯片汉字存储实验 1. 连接27C256 EPROM芯片到单片机系统 2. 将16×16点阵汉字字库写入芯片 3. 编写程序读取并显示汉字 ### 2. 存储芯片字扩展实验 1. 使用地址译码器(如74HC138)扩展多片27C256 2. 将完整GB2312字库分布到各芯片中 3. 编写程序实现跨芯片汉字读取 ### 3. 存储芯片位扩展实验 1. 连接两片27C256实现16位数据总线扩展 2. 优化字库存储结构,提高读取速度 3. 测试并比较扩展前后的性能差异 ## 实验代码示例(单片机部分) ```c #include <reg52.h> #include <intrins.h> // 定义存储芯片控制引脚 sbit CE = P2^7; // 片选 sbit OE = P2^6; // 输出使能 sbit
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值