首页 > 代码库 > 正则表达式——特殊符号及其意义

正则表达式——特殊符号及其意义

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    
       

正则表达式——特殊符号及其意义