博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式入门
阅读量:5235 次
发布时间:2019-06-14

本文共 2059 字,大约阅读时间需要 6 分钟。

JavaScript 中使用 
正则对象使用
1. 声明正则表达式对象=匹配模式
2. 调用方法传参
正则对象的两个方法
1 regular.exec(str)2 regular.test(str)3 var str='ssfdsf';4 var reg=/66/;5 reg.test(str);

 

String 字符串方式使用
1 search(reg); RETURN 匹配起始位置,如未找到,返回-12 match(reg); RETURN 匹配的数组3 replace(reg,'替换后的字符串'); RETURN 替换后的新字符串4 split(reg); RETURN 以指定模式的字符分割字符串,返回数组
 
子表达式
通过一对圆括号括起来的内容,就称为子表达式
 
捕获
运行过程中,子表达式所匹配到的内容会被系统放入缓冲区中
 
反向引用
通过\n (0<n) 来引入缓冲区中的内容
 
例如:
  查找 1221,1881 var reg=/(\d)(\d)\2\1/
  查找 2233,7788 var reg=/(\d)\1(\d)\2/
1 案例:2 1. 获取所有HTML代码3 var reg=/<(.*)>.*<\/\1>/gi4 2. 替换手机号5 var reg=/\d{3}\d{4}\d{4}/gi;6 var str=13333333333; str = str.replace(reg,'$1****$3');
 
正则表达式的构成
普通字符
a-z,A-Z,0-9,_ 等
 
元字符
$ ^ * ( ) [] {} + ? \ | / .
 
字符簇
用一对方括号括起来的内容 [1,2,3] 表示匹配方括号中任意字符
 
反义字符簇 ^
只在[]里面使用代表反义 在括号外使用的时候不是取反的意思
例如: [^a-z] 匹配除a-z以外的任意字符
 
注意: /[^abc]/ 和 /^abc/ 的区别
var reg=/^abc/gi; 匹配以 abc 开通的字符串
 
预定义字符类
. 匹配除了\n\r之外的任意字符 [^\n\r]
\w 匹配任意ASCII单字符, 等价于[a-zA-Z0-9_]
\W 和\w 相反
\d 匹配任何ASCII数字,等价于[0-9]
\D 和\d相反
\s 匹配任何Unicode空白符,包括 空格,制表符,换行,回车等
\S 和\s相反
\b 匹配一个单词的边界
\B 和\b相反
 
数量词
由于字符类只能匹配单个字符,需要结合数量词完成字符串匹配
{n,m} 匹配前一项至少n次,但是不能超过m次
{n,} 匹配前一项至少n次,或者更多次
{n} 匹配前一项确定的n次
? 匹配前一项0次或1次 //可以用来解除贪婪模式
+ 匹配迁移性1次或多次
* 匹配前一项任意次
 
贪婪匹配
在正则表达式中,我们把匹配多的就不匹配少的称为'贪婪匹配',默认就是贪婪匹配
可以通过 ? 转化为非贪婪匹配, ? 必须放在重复类字符后面
 
模式修正符
i 执行大小写不敏感的匹配
g 执行全局匹配, 默认是找到第一个之后就停止了
m 执行多行匹配,此时可以用 ^ 和 $ 匹配每一户开头或结尾
s 代表单行模式,把整个字符串当做一行来看待. js 目前不支持单行模式
 
1 案例:2 1. 过滤js字符串3 var str = '' -> ok4 var reg=/

 

边界
^ 匹配字符串开头,多行检测中会匹配每一行的开头
$ 匹配字符串的结尾,在多行检测中,会匹配每一行结尾
\b 匹配一个单词的边界
\B 与\b相反,匹配非词语边界的字符
 
转义符
\ 对特殊字符转义 $ ^ * () {} [] . / + ?
选择匹配符
| 可以匹配多个规则
 

正则表达式在PHP中的使用
preg_match() preg_match_all() preg_replace()
 
preg_match($reg, $str, $array) 匹配一次,返回0/1, 匹配的结果放进$array中
preg_match_all($reg, $str, $array); 匹配多次, 返回0/N.
 
php里取消贪婪模式
在正则外面加上 U 模式符 加了U 就不要在式子里面添加 ? 了
 
preg_replace 的两种用法
用法一: 前两个参数都是字符串
preg_replace($reg, $content, $str);
按照 $reg 规则匹配 $str 里面的内容,然后用 $content 替换内容
 
用法二: 前两个参数都是数组
preg_replace(array($reg1,$reg2), array($content1,$content2), $str);
先按照 $reg1 匹配内容替换为 $content1,
再按照 $reg2 匹配内容替换为 $content2.
 

转载于:https://www.cnblogs.com/neng-zheng/p/6213487.html

你可能感兴趣的文章
GIT笔记:将项目发布到码云
查看>>
JavaScript:学习笔记(7)——VAR、LET、CONST三种变量声明的区别
查看>>
JavaScript 鸭子模型
查看>>
SQL Server 如何查询表定义的列和索引信息
查看>>
GCD 之线程死锁
查看>>
NoSQL数据库常见分类
查看>>
一题多解 之 Bat
查看>>
Java 内部类
查看>>
{面试题7: 使用两个队列实现一个栈}
查看>>
【练习】使用事务和锁定语句
查看>>
centos7升级firefox的flash插件
查看>>
Apache Common-IO 使用
查看>>
评价意见整合
查看>>
二、create-react-app自定义配置
查看>>
Android PullToRefreshExpandableListView的点击事件
查看>>
系统的横向结构(AOP)
查看>>
linux常用命令
查看>>
NHibernate.3.0.Cookbook第四章第6节的翻译
查看>>
使用shared memory 计算矩阵乘法 (其实并没有加速多少)
查看>>
Django 相关
查看>>