1、非打印字符 | |||
\cx | 匹配由x指明的控制字符。 | \cM:匹配一个control-M或回车符 | x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。 |
\f | 匹配一个换页符,等价于\x0c \cL | ||
\n | 匹配一个换行符,等价于\x0a \cJ | ||
\r | 匹配一个回车,等价于\x0d \cM | ||
\s | 匹配一个任意空白字符,等价于[\f\n\r\t\v] | ^\s*\s$:匹配开头和结尾的空白字符 | |
\S | 匹配一个任意非空白字符,等价于[^\f\n\r\t\v] | ||
\t | 匹配一个制表符 | ||
\v | 匹配一个垂直制表符 | ||
2、特殊字符 | |||
() | 标记一个子表达式的开始和结束位置,子表达式可获取供以后使用 | (\s*):匹配连续空格 | var str = "abc sb b sa b sc abc sd"; var reg = /s([abc]+\b)/; var arr = str.match(reg); //arr = ("sb","sa","sc"); //临时缓存区$1 = "b",$2 = "a",$3 = "c"; ()会导致所有匹配存到一个临时缓冲区,缓冲区编号为1-99,每个缓冲区都可以用\n(1<n<99的十进制数)来引用。 var reg2 = /s([abc]+\b)\s+\1\b/;//匹配s([abc]+\b)\s+b\b的字符串 var arr2 = str.match(reg); //arr2 = ("sb b","sa b"); |
[] | 定义一个匹配的字符串范围 | [ab]:匹配a或b号 | |
{} | 一般用来表示匹配的长度 | \s{3}:匹配三个空格 | |
* | 匹配前面子表达式零次或多次 | a*:匹配连续的一个或多个a | |
+ | 匹配前面子表达式一次或多次 | a+:匹配连续的两个或多个a | |
. | 匹配换行符以外的所有字符 | 要匹配换行符用[.\n] | |
? | 匹配前面的子表达式零次或多次,或指明一个非贪婪限定字符 | 贪婪匹配:正则表达式趋向于匹配最大长度的字符串("aaaaa".match(/a*/);//aaaaa) 非贪婪匹配:匹配到结果就好了("aaaaa".match(/a*?/);//a) ?的四种用法: 1、匹配前面子表达式0/1次 2、指明非贪婪限定字符 *?、+?、??、{n}?、{n,}?、{n,m}? 3、原文符号,\? 4、不捕捉模式 (?……) |
|
\ | 将下一个字符标记为特殊字符或原意字符或者向后引用 | \n:匹配换行符 \\:匹配\ \1:引用第一个缓存区 |
|
^ | 匹配输入字符的开始位置。在[]中使用,表示不接受改字符集合 | ^[1-9][0-9]*{3}:不以0开头的四位数字 | |
$ | 匹配输入字符的结尾的位置。如果设置了RegExp对象的Multitle属性,则也匹配‘\n’或‘\r‘ | [a-z]*a$:匹配以a结尾的字符串 | |
| | 指明两项之间的一个选择 | a|b:匹配a或b | |
3、限定符 | |||
{n} | n是一个非负整数,匹配确定的n次 | a{3}:匹配aaa | |
{n,} | n是一个非负整数,匹配至少n次 | a{3,}:匹配aaa,aaaa,aaaaa…… | |
{n,m} | n<m,匹配至少n次至多m次 | a{2,3}匹配aa,aaa | |
\b | 单词分界符 | ll\b:匹配hell中的“ll”,但是不匹配hello中的“ll” | |
\B | 非单词分界符序列 | ll\B:不匹配hell中的“ll”,但匹配hello中的“ll” | |
\A | 总是能够匹配带搜索文本的起始位置 | ||
\Z | 标示在未指定任何模式下匹配的字符,通常是字符串的末尾位置,或者是在字符串末尾的换行符之前的位置 | ||
\z | 字匹配字符串的末尾,而不考虑任何换行符 | ||
\G | 当前匹配的起始位置 | ||
4、预定义字符集 | |||
\d | 任意一个十进制数字,相当于[0-9] | ||
\D | 任意一个非十进制数字 | ||
\s | 任意一个空白字符 | ||
\S | 任意一个非空白字符 | ||
\w | 任意一个单词字符,相当于[a-zA-Z0-9] | ||
\W | 任意一个非单词字符 | ||
5、修饰符 | |||
i | 忽略大小写的模式(?i……,?-i……,?i:……) | [a-z]i:等同于[a-zA-Z] | |
M | 多文本模式。即字符串内部有多个换行符时,影响“^”,“$”的匹配 | ||
s | 但文本模式。在此模式下,元字符“.”可以匹配换行符。其他模式规则则不能匹配换行符 | ||
X | 忽略空白字符 | ||
6、捕获分组 | |||
(exp) | 匹配exp,并捕获文本到自动命名的组里 | ||
(?<name>exp) | 匹配exp,并捕获文本到名为name的分组里 | ||
(?:exp) | 匹配exp,不补货匹配的文本,也不给次分组匹配组号 | ||
以下为零宽断言 | |||
(?=exp) | 匹配exp前面的位置 | "How are you doing".match(/(?<txt>.+(?=ing))/);txt = "How are you do"; | |
(?<=exp) | 匹配exp后面的位置 | ||
(?=!exp) | 匹配前面不是exp的位置 | ||
(?<=!exp) | 匹配后面不是exp的位置 | ||
别人写的教程 | http://blog.csdn.net/baidu_31333625/article/details/72846270 | ||
常用正则表达式 | https://c.runoob.com/front-end/854 | ||
时间: 2024-10-05 18:13:01