JavaScript-正则表达式

Posted songsong_p_blue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript-正则表达式相关的知识,希望对你有一定的参考价值。

d可以匹配一个数字,w可以匹配一个字母或数字

^表示字符串的开始位置^d表示必须以数字开头。

$表示字符串的结束位置d$表示必须以数字结束。

要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符

要做更精确地匹配,可以用[]表示范围,比如:

  • [0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;

  • [0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如‘a100‘‘0_Z‘‘Py3000‘等等;

  • [a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量;

  • [a-zA-Z\_][0-9a-zA-Z\_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。

 

修饰符

g  :表示是全局搜索,会有多个结果。如果正则表达式带有g修饰符,则每一次test方法都从上一次结束的位置开始向后匹配。

 转义符

正则表达式中,需要反斜杠转义的,一共有12个字符:^.[$()|*+?{需要特别注意的是,如果使用RegExp方法生成正则对象,转义需要使用两个斜杠,因为字符串内部会先转义一次。

特殊字符

  • cX 表示Ctrl-[X],其中的X是A-Z之中任一个英文字母,用来匹配控制字符。
  • [] 匹配退格键(U+0008),不要与混淆。
  •  匹配换行键。
  •  匹配回车键。
  •  匹配制表符 tab(U+0009)。
  • v 匹配垂直制表符(U+000B)。
  • f 匹配换页符(U+000C)。
  •  匹配null字符(U+0000)。
  • xhh 匹配一个以两位十六进制数(x00-xFF)表示的字符。
  • uhhhh 匹配一个以四位十六进制数(u0000-uFFFF)表示的 Unicode 字符。

字符类

字符类(class)表示有一系列字符可供选择,只要匹配其中一个就可以了。所有可供选择的字符都放在方括号内,比如[xyz] 表示xyz之中任选一个匹配。

(1)脱字符(^)

如果方括号内的第一个字符是[^],则表示除了字符类之中的字符,其他字符都可以匹配。比如,[^xyz]表示除了xyz之外都可以匹配。

如果方括号内没有其他字符,即只有[^],就表示匹配一切字符,其中包括换行符。

(2)连字符(-)

某些情况下,对于连续序列的字符,连字符(-)用来提供简写形式,表示字符的连续范围。比如,[abc]可以写成[a-c][0123456789]可以写成[0-9],同理[A-Z]表示26个大写字母。

当连字号(dash)不出现在方括号之中,就不具备简写的作用,只代表字面的含义

预定义模式

预定义模式指的是某些常见模式的简写方式。

  • d 匹配0-9之间的任一数字,相当于[0-9]
  • D 匹配所有0-9以外的字符,相当于[^0-9]
  • w 匹配任意的字母、数字和下划线,相当于[A-Za-z0-9_]
  • W 除所有字母、数字和下划线以外的字符,相当于[^A-Za-z0-9_]
  • s 匹配空格(包括换行符、制表符、空格符等),相等于[ vf]
  • S 匹配非空格的字符,相当于[^ vf]
  •  匹配词的边界。
  • B 匹配非词边界,即在词的内部。

参考资料:

https://wangdoc.com/javascript/stdlib/regexp.html

https://www.liaoxuefeng.com/wiki/897692888725344/923056128128864

 

以上是关于JavaScript-正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript中 正则表达式的使用 及 常用正则表达式

Javascript 清理 URL 正则表达式

通过 Java 正则表达式提取 semver 版本字符串的片段

攻破难啃的骨头-正则表达式(转)

text 正则表达式片段

markdown 正则表达式模式片段