正则表达式是由一个字符序列形成的搜索模式。可以用来搜索也可以用来替换。
语法:/正则表达式主体/修饰符(可选)
//是定界符,内容则是需要查找或替换的内容。比如/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!"
元字符
-
任何一个
/a[abc]q/:既可以是 aaq,也可以是 abq,也可以是 acq,但不能是 abbq
-
范围
/[a-z]/:a 到 z 之间任何字符
/[0-9]/:0-9 之间任何数字
/[a-z0-9]/:包含上述两种,不需要分隔符
但是元字符只代表一位。比如/[3-59]/其实是 3-5 或者 9
-
排除
/[^+]/:排除+号,也可以换成^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(字符串)