热点新闻
JS 正则表达式的使用 2022-06-07
2023-07-17 02:00  浏览:350  搜索引擎搜索“促展会”
温馨提示:为防找不到此信息,请务必收藏信息以备急用! 联系我时,请说明是在促展会看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布

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

  • 字面量正则表达式

const pattern=/test/; #正则修饰符 #i 对大小写不敏感 #g 全局匹配 #m 多行匹配 #y 从最后一个位置开始匹配 exp : const pattern=/test/i; #对大小写不敏感

  • 创建RegExp对象的实例

const pattern=new RegExp("test"); #第二个参数代表字面量中的正则修饰符 const pattern=new RegExp("test","i") #对大小写不敏感

  • 匹配字符集
    匹配字符集使用的是[]

exp : /[abc]/ #表示匹配a/b/c中的任意一个字符,注意是一个 /[^abc]/ #表示匹配除了a/b/c的任意一个字符,^在这里重写,代表非

  • 转义
    使用反斜杠代表转义
    例如在[]中的^代表非,而如果要匹配其本身,则使用\转义
    在字面量中转义仅需要一个\;而在RegExp实例化中需要\\

exp : const pattern=/[\^]/; #代表匹配^本身 const pattern=new RegExp("\\^"); #注意是双下划线

  • 起止符号
    在[]以外的地方,^代表字符串起始位置;$代表字符串末尾
  • 重复出现
    ? 代表其前面的匹配项出现0次或者1次,可以用于非贪婪模式

exp : const pattern=/a+/可以匹配aaa;而/a+?/则只会匹配一个a

+ 代表其前面的匹配项出现1次或者多次
* 代表其前面的匹配项出现0次或者1次或者多次
/a{4}/ 匹配4个连续的字符a
/a{4,6}/ 匹配4个-6个连续的字符a
/a{4,}/ 匹配4个或者更多个连续的字符a

  • 转义字符

\d 代表数字[0-9] \D 代表非数字 \w 代表数字、字母、下划线 \W 代表非数字、字母、下划线 \b 空格 \r 回车 \n 换行符 . 除了换行符(\n \r \u2028 \u2029)以外的任意字符

  • 反向引用

/^([dtn])a\1/ 匹配的内容是[dtn]中任意一个+a+第一次匹配到的[dtn]中的任意一个 \1即代表反向引用

  • 正则表达式的编译

const a1=/test/g; const a2=new RegExp("test","g");

a1!=a2,因为每个正则表达式都是独一无二的,与原始数据类型(string,number等)不相同

  • 正则表达式的捕获

const match=transfromValue.match(/translateY\(([^\)]+)\)/);

()括号代表一个捕获或者分组,而左右用\则表示转义,即/translateY(([^)]+))/中\(与\)代表匹配()本身,内层()代表捕获;match方法返回捕获到的值,match[0]中存放正则匹配到的所有结果,match[1]中存放的是()中捕获到的内容

const html="<div class="test"><b>this is a test</b></div>"; const results=html.match(/<(\/?)(\w+)([^>]*?)>/); const all=html.match(/<(\/?)(\w+)([^>]*?)>/g);

results[0]=="<div class="test">"
results[1]==""
results[2]=="div"
results[3]=="class="test""
all[0]=="<div class="test">"
all[1]==<b>
all[2]==</b>
all[3]==</div>
可以看出局部正则表达式可以获得()中定义的3个捕获,全部正则表达式不能

const tag=/<(\/?)(\w+)([^>]*?)>/g; const match=tag.exec(html);

上述匹配或者捕获也可以使用正则的exec()方法,exec()方法使用全局匹配,返回每一次的局部的匹配以及捕获的结果

  • 捕获的引用(难度:***)

#反向引用 const html="<b class="test">hello</b><i>world!</i>"; const pattern=/<(/w+)([^>]*?)>(.*?)<\/\1>/g; #replace方法配合$1 $2的引用方法 “fontFamily”.replace(/([A-Z])/g,"-$1")=="fontfamily"; #-$1代表匹配到的第一个大写字母 #replace仅仅返回()中的捕获!

const pattern=/((?:ninjia-)+)sword; const ninjia="ninjia-ninjia-sword".match(pattern);

?:代表不创建捕获,这样内层()仅仅代表分组,外层()代表捕获

发布人:ca8d****    IP:117.173.64.***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发