正则表达式小结

发布时间 2023-06-27 14:40:02作者: 脏猫

正则表达式是由一个字符序列形成的搜索模式。可以用来搜索也可以用来替换。

语法:/正则表达式主体/修饰符(可选)

//是定界符,内容则是需要查找或替换的内容。比如/runoob/就是查找 runoob 这个词

正则表达式修饰符

i:无视大小写。比如"abvAce" 中使用/A/i,会匹配到小写 a

g:全局匹配。比如“abvbeb”中使用/b/g,会匹配到所有三个 b

、$:行首行尾符,比如/1{ab}.js$/要求的是 1 开头.js 结尾

字符串方法

search() 方法 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串,并返回子串的起始位置。

var str = "Visit Runoob!";
var n = str.search(/Runoob/i);

得到结果就会是 6,是 R 字符的位置。

search 方法参数也可以选择用字符串,字符串参数会转换为正则表达式。

replace() 方法 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

var str = "Visit Microsoft!";
var txt = str.replace(/microsoft/i, "Runoob");

结果 str 会变成"Visit Runoob!"

元字符

  1. 任何一个

    /a[abc]q/:既可以是 aaq,也可以是 abq,也可以是 acq,但不能是 abbq

  2. 范围

    /[a-z]/:a 到 z 之间任何字符

    /[0-9]/:0-9 之间任何数字

    /[a-z0-9]/:包含上述两种,不需要分隔符

    但是元字符只代表一位。比如/[3-59]/其实是 3-5 或者 9

  3. 排除

    /[^+]/:排除+号,也可以换成^0-9a-z

转义

转义 等同于
\d [0-9]
\w [0-9a-z_]
\s 空格符*
\D [^0-9]
\W [^0-9a-z_]
\S 非空白符
. 任意字符

量词

量词 描述
n+ 匹配任何包含至少一个 n 的字符串。
n* 匹配任何包含零个或多个 n 的字符串。
n? 匹配任何包含零个或一个 n 的字符串。

比如在“34sfh574sdhf93hcn”中用/\d/g,会得到 3,4,5,7,4,9,3。但是用/\d+/g 可以得到 34,574,93

{n}: /\d{6}/匹配的是 6 个数字的内容。/1\d{5}/匹配的是 1 开头后面五个数字的内容

{n,m}:/\d{5,12}/匹配的是 5 到 12 个数字的内容

{n,}: /\d{6}/匹配的是至少 6 个数字的内容。+其实等同于{1,}至少一个,多则不限。?等同于{0,1}

关于?的用法比如,要匹配.js 或者.jsx 文件。可以用/.jsx?/来匹配。

关于.的用法,因为它是任意字符,可以/a.{5-18}z/,即 a 开头,z 结尾中间任意 5-18 个字符。

如果是真的要用.这个字符本身,需要加反斜杠\.

test 方法

test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。

它是由符合的部分就返回 true,没有符合内容才 false。要严格要求的话得用行首行尾修饰符

用法是 (正则表达式).test(字符串)