在工作中,我们较长遇到这样的需求
- 给你一个字符串,把字符串里面的链接、数字、电话等显示不同的颜色,
- 给你一个包含自定义表情的文字,找出里面的表情,替换成本地的表情图片;
- 根据用户的输入内容,判断是否时微信号、手机号、邮箱号、纯数字。
对于1和2的场景,我们使用正则表达式+富文本便可以轻松应对。
对于3,我们只需根据正则表达式的规则,封装好自己的郑泽库,就可以做到一劳永逸了!
正则表达式
检测给定的字符串是否符合我们定义的逻辑, 也可以从字符串中获取我们想要的特定部分。 它可以迅速地用极简单的方式达到字符串的复杂控制。
基本符号
常用的元符串
元字符 | 含义 |
---|---|
\w | 字母数字下划线或者汉字 |
\s | 表示空白字符(space),它和\t\n\r |
\d | 数字(只能表示一位数字,可以替换[0-9] |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 字符串的结束 |
\num | num是一个正整数,表示num之前的自复重复出现相同的个数 |
常用的限定符:
限定符 | 含义 |
---|---|
* | 重复零次或多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
懒惰限定符:
[] 表示字符串列举的意思
() 表示分组,就是括号里面的作为一个整体
例如: [abc]表示a或者b或者c,他只能匹配一个
常用模式的列举:
[0-9] 表示数字 等价于 \d
[a-z] 表示小写字母
[A-Z]表示大写字母
在列举上面加上^ 即可表示非,比如[^0-9]表示非数字
\w 单词字符[_a-zA-Z0-9]
\D 表示非数字