澳门新葡萄京官网首页超全的js正则表达式整理笔记

var reCat = new RegExp("cat", "gi"); //RegExp构造函数可以带一个或两个参数,第一个参数描述需要进行匹配的模式字符串,第二个参数指定了额外的处理命令 
var reCat = /cat/gi; //使用Perl风格的语法 

 i:执行对大小写不敏感的匹配 
 g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止) 
 m:执行多行匹配 

JS正则表明式

正则表明式能够: 
•测验字符串的某些情势。举例,能够对三个输入字符串进行测验,看在该字符串是或不是存在二个电话号码情势或三个银行卡号码方式。那称为数占有效性验证 
•替换文本。可以在文书档案中动用四个正则表明式来标志特定文字,然后能够全方位将其删除,或许替换为其他文字 
•根据格局相称从字符串中领到三个子字符串。能够用来在文书或输入字段中寻找特定文字 

正则表达式语法 
两个正则表明式就是由日常性字符(比如字符 a 到
z)以致特殊字符(称为元字符)组成的文字格局。该方式描述在搜求文字主体时待相称的二个或八个字符串。正则表明式作为三个模板,将有些字符情势与所寻觅的字符串实行相称。 

创立正则表明式 

  1. var re = new RegExp(卡塔尔;//RegExp是多个对象,和Aarray同样  
  2. //但这么未有别的功效,需求将正则说明式的剧情作为字符串传递进入  
  3. re =new RegExp(“a”State of Qatar;//最轻松易行的正则表达式,将相配字母a  
  4. re=new RegExp(“a”,”i”卡塔尔;//第二个参数,表示杰出时不分大小写  

RegExp构造函数第叁个参数为正则表明式的文书内容,而首先个参数则为可选项标识.标记能够组成使用 

•g (全文字笔迹核准索) 
•i (忽视大小写) 
•m (多行查找) 

  1. var re = new RegExp(“a”,”gi”State of Qatar;//相配全体的a或A  

正则表明式还会有另黄金年代种正则表明式字面量的表明方式 

  1. var re = /a/gi;  

和正则表明式相关的法子和脾气 

正则表明式对象的主意 

•test,再次来到三个 Boolean
值,它提出在被寻觅的字符串中是否留存情势。假如存在则赶回
true,不然就重返 false。 
•exec,用正则表明式格局在字符串中运营查找,并赶回包<script
type=”text/javascript”
src=”
type=”text/javascript”
src=” 
•compile,把正则表明式编写翻译为内部格式,进而施行得越来越快。 
正则表明式对象的性子 

•source,再次回到正则表明式形式的文书的别本。只读。 
•lastIndex,再次回到字符地点,它是被搜寻字符串中下叁回得逞相称的开端位置。 
•1…1…9,再次回到九个在形式相配时期找到的、前段时间保存的局地。只读。 
•input ($_卡塔尔国,重临实施正式表述查找的字符串。只读。 
•lastMatch ($&卡塔尔,再次来到任何正则表明式寻找进程中的最终相配的字符。只读。 
•lastParen
($+卡塔尔(قطر‎,借使有的话,再次来到任何正则表明式查找进程中最后括的子相称。只读。 
•leftContext
($`卡塔尔,重临被搜寻的字符串中从字符串初步地方到最后相称此前的岗位之间的字符。只读。 
•rightContext
($’卡塔尔国,再次来到被搜寻的字符串中从最后一个鬼斧神工岗位上马到字符串结尾之间的字符。只读。 
String对象一些和正则表明式相关的不二等秘书诀 

•match,找到叁个或多少个正则表明式的相配。 
•replace,替换与正则表明式相配的子串。 
•search,检索与正则表达式相相配的值。 
•split,把字符串分割为字符串数组。 

测量检验正则表明式是怎么行事的! 

  1. //test方法,测量试验字符串,相符形式时再次来到true,不然再次来到false  
  2. var re = /he/;//最简便易行的正则表明式,将相称he这几个单词  
  3. var str = “he”;  
  4. alert(re.test(str));//true  
  5. str = “we”;  
  6. alert(re.test(str));//false  
  7. str = “HE”;  
  8. alert(re.test(str卡塔尔国State of Qatar;//false,大写,假如要大小写都十分能够钦点i标记(i是ignoreCase或case-insensitive的意味卡塔尔  
  9. re = /he/i;  
  10. alert(re.test(str));//true  
  11. str = “Certainly!He loves her!”;  
  12. alert(re.test(strState of QatarState of Qatar;//true,只要包涵he(HE卡塔尔(قطر‎就符合,假如要只是he或HE,无法有此外字符,则可使用^和$  
  13. re = /^he/i;//脱字符(^卡塔尔代表字符开首地点  
  14. alert(re.test(str));//false,因为he不在str最开始  
  15. str = “He is a good boy!”;  
  16. alert(re.test(str卡塔尔国卡塔尔(قطر‎;//true,He是字符开端位置,还需求运用$  
  17. re = /^he$/i;//$代表字符甘休地方  
  18. alert(re.test(str));//false  
  19. str = “He”;  
  20. alert(re.test(str));//true  
  21. //当然,那样不能够觉察正则表达式有多强盛,因为我们全然能够在地点的例证中选拔==或indexOf  
  22. re = /s/;// s相称任何空白字符,满含空格、制表符、换页符等等  
  23. str= “user Name”;//顾客名包罗空格  
  24. alert(re.test(str));//true  
  25. str = “user     Name”;//客商名包涵制表符  
  26. alert(re.test(str));//true  
  27. re=/^[a-z]/i;//[]同盟内定范围内的人身自由字符,这里将相配印度语印尼语字母,不区分朗朗上口写  
  28. str=”variableName”;//变量名必需以字母早前  
  29. alert(re.test(str));//true  
  30. str=”123abc”;  
  31. alert(re.test(str));//false  

自然,仅仅掌握了字符串是不是匹配情势还相当不足,大家还亟需掌握什么字符相称了格局 

  1. var osVersion = “Ubuntu 8”;//在那之中的8代表系统主版本号  
  2. var re = /^[a-z]+s+d+$/i; //+号表示字符最少要出新1次,s表示空白字符,d表示贰个数字  
  3. alert(re.test(osVersion卡塔尔State of Qatar;//true,但大家想明白主版本号  
  4. //另五个方法exec,再次来到八个数组,数组的率先个要素为总体的卓越内容  
  5. re=/^[a-z]+s+d+$/i;  
  6. arr = re.exec(osVersion);  
  7. alert(arr[0]卡塔尔国;//将osVersion完整输出,因为全体字符串正巧相称re  
  8. //笔者只供给抽出数字  
  9. re=/d+/;  
  10. var arr = re.exec(osVersion);  
  11. alert(arr[0]);//8  

更目眩神摇的用法,使用子相称 

  1. //exec再次回到的数组第1到n元素中隐含的是相称中冒出的妄动三个子相配  
  2. re=/^[a-z]+s+(d+卡塔尔(قطر‎$/i;//用(卡塔尔(قطر‎来创立子相称  
  3. arr =re.exec(osVersion);  
  4. alert(arr[0]State of Qatar;//整个osVersion,也正是正则说明式的完好相配  
  5. alert(arr[1]卡塔尔国;//8,第叁个子相称,事实也得以如此抽出主版本号  
  6. alert(arr.length);//2  
  7. osVersion = “Ubuntu 8.10”;//抽取主版本号和次版本号  
  8. re = /^[a-z]+s+(d+).(d+State of Qatar$/i;//.是正则说明式元字符之生机勃勃,若要用它的字面意思须转义  
  9. arr = re.exec(osVersion);  
  10. alert(arr[0]);//完整的osVersion  
  11. alert(arr[1]);//8  
  12. alert(arr[2]);//10  

留意,当字符串不相配re时,exec方法将回到null  

String对象的黄金时代对和正则表明式有关的方法 

  1. //replace方法,用于替换字符串  
  2. var str =”some money”;  
  3. alert(str.replace(“some”,”much”));//much money  
  4. //replace的首先个参数可以为正则表达式  
  5. var re = /s/;//空白字符  
  6. alert(str.replace(re,”%”));//some%money  
  7. //在不驾驭字符串中有稍稍空白字符时,正则表明式极为便利  
  8. str =”some some             tsometf”;  
  9. re = /s+/;  
  10. alert(str.replace(re,”#”卡塔尔卡塔尔;//但这么只会将率先次面世的一群空白字符替换掉  
  11. //因为八个正则表明式只可以进展一回相称,s+相配了第二个空格后就退出了  
  12. re = /s+/g;//g,全局标记,将使正则表明式相称整个字符串  
  13. alert(str.replace(re,”@”));//some@some@some@  
  14. //另二个与之相同的是split  
  15. var str = “a-bd-c”;  
  16. var arr = str.split(“-“);//返回[“a”,”bd”,”c”]  
  17. //假设str是客户输入的,他或者输入a-bd-c也或然输入a bd c或a_bd_c,但不会是abdc(那样就说她输错了卡塔尔国  
  18. str = “a_db-c”;//客商以她喜好的措施加分隔符s  
  19. re=/[^a-z]/i;//前边我们说^表示字符开头,但在[]里它表示贰个负字符集  
  20. //相配任何不在内定范围内的轻巧字符,这里将相称除字母处的保有字符  
  21. arr = str.split(re);//仍返回[“a”,”bd”,”c”];  
  22. //在字符串中寻找时大家常用indexOf,与之对接纳周丽娟则查找的法子是search  
  23. str = “My age is 18.Golden age!”;//年龄不是必然的,我们用indexOf无法招来它的岗位  
  24. re = /d+/;  
  25. alert(str.search(reState of Qatar卡塔尔;//再次回到查找到的字符串初始下标10  
  26. //注意,因为查找自己就是出新第贰回就立时赶回,所以不需求在search时采纳g标记  
  27. //下边包车型客车代码尽管不不可靠,但g标志是多余的  
  28. re=/d+/g;  
  29. alert(str.search(re));//仍然是10  

在乎,当search方法未有找到相配时,将回到-1

贴近于exec方法,String对象的match方法也用于将字符串与正则表明式实行相称并回到结果数组 

  1. var str = “My name is CJ.Hello everyone!”;  
  2. var re = /[A-Z]/;//相称全数大写字母  
  3. var arr = str.match(reState of Qatar;//再次回到数组  
  4. alert(arr卡塔尔国;//数组中只会蕴藏多少个M,因为大家未有利用全局相配  
  5. re = /[A-Z]/g;  
  6. arr = str.match(re);  
  7. alert(arr);//M,C,J,H  
  8. //从字符串中抽取单词  
  9. re = /b[a-z]*b/gi;//b表示单词边界  
  10. str = “one two three four”;  
  11. alert(str.match(re));//one,two,three,four  

RegExp对象实例的有的属性 

  1. var re = /[a-z]/i;  
  2. alert(re.source);//将[a-z]字符串输出  
  3. //请小心,直接alert(re卡塔尔(قطر‎会将正则表明式连同前向斜线与申明输出,那是re.toString方法定义的  

每一种RegExp对象的实例具备lastIndex属性,它是被寻觅字符串中下叁次成功相配的开始地方,默许值是-1。
lastIndex 属性被 RegExp 对象的 exec 和 test 方法修正.何况它是可写的. 

  1. var re = /[A-Z]/;  
  2. //exec方法实践后,校订了re的lastIndex属性,  
  3. var str = “Hello,World!!!”;  
  4. var arr = re.exec(str);  
  5. alert(re.lastIndex卡塔尔国;//0,因为尚未设置全局标记  
  6. re = /[A-Z]/g;  
  7. arr = re.exec(str);  
  8. alert(re.lastIndex);//1  
  9. arr = re.exec(str);  
  10. alert(re.lastIndex);//7  

当相称战败(前边未有相配),或lastIndex值大于字符串长度时,再实行exec等方法会将lastIndex设为0(起初地点卡塔尔(قطر‎ 

  1. var re = /[A-Z]/;  
  2. var str = “Hello,World!!!”;  
  3. re.lastIndex = 120;  
  4. var arr = re.exec(str);  
  5. alert(re.lastIndex);//0  

RegExp对象的静态属性 

  1. //input 最后用于相称的字符串(传递给test,exec方法的字符串)  
  2. var re = /[A-Z]/;  
  3. var str = “Hello,World!!!”;  
  4. var arr = re.exec(str);  
  5. alert(RegExp.input);//Hello,World!!!  
  6. re.exec(“tempstr”);  
  7. alert(RegExp.input);//仍然是Hello,World!!!,因为tempstr不匹配  
  8. //lastMatch 最后相称的字符  
  9. re = /[a-z]/g;  
  10. str = “hi”;  
  11. re.test(str);  
  12. alert(RegExp.lastMatch);//h  
  13. re.test(str);  
  14. alert(RegExp[“$&”]State of Qatar;//i  ,$&是lastMatch的短名字,但出于它不是合法变量名,所以要。。  
  15. //lastParen 最后相配的分组  
  16. re = /[a-z](d+)/gi;  
  17. str = “Class1 Class2 Class3”;  
  18. re.test(str);  
  19. alert(RegExp.lastParen);//1  
  20. re.test(str);  
  21. alert(RegExp[“$+”]);//2  
  22. //leftContext  再次来到被搜寻的字符串中从字符串开端地方到结尾相称以前的地点之间的字符  
  23. //rigthContext 重返被寻觅的字符串中从最后一个协作岗位上马到字符串结尾之间的字符  
  24. re = /[A-Z]/g;  
  25. str = “123ABC456”;  
  26. re.test(str);  
  27. alert(RegExp.leftContext);//123  
  28. alert(RegExp.rightContext);//BC456  
  29. re.test(str);  
  30. alert(RegExp[“$`”]);//123A  
  31. alert(RegExp[“$'”]);//C456  

multiline属性再次回到正则表达式是还是不是接纳多行方式,那本天性不照准某些正则表明式实例,而是本着具备正则表明式,何况那么些性子可写.(IE与Opera不帮衬那本个性卡塔尔国 

  1. alert(RegExp.multiline);  
  2. //因为IE,Opera不帮忙这么些特性,所以最佳只怕单独钦赐  
  3. var re = /w+/m;  
  4. alert(re.multiline);  
  5. alert(RegExp[“$*”]卡塔尔;//RegExp对象的静态属性不会因为给RegExp有个别对象实例钦定了m标识而更正  
  6. RegExp.multiline = true;//那将开采装有正则表明式实例的多行般配格局  
  7. alert(RegExp.multiline);  

行使元字符注意事项:元字符是正则表达式的大器晚成有的,当我们要协作正则表明式本人时,必得对这个元字符转义.上边是正则表明式用到的享有元字符 
( [ { ^ $ | ) ? * + .

  1. var str = “?”;  
  2. var re = /?/;  
  3.     alert(re.test(str卡塔尔国卡塔尔国;//出错,因为?是元字符,必得转义  
  4.     re = /?/;  
  5.     alert(re.test(str));//true  

使用RegExp布局函数与利用正则表达式字面量成立正则表达式注意点 

  1. var str = “?”;  
  2. alert(str卡塔尔国;//只会输出?  
  3. var re = /?/;//将匹配?  
  4. alert(re.test(str));//true  
  5. re = new RegExp(“?”卡塔尔(قطر‎;//出错,因为这一定于re = /?/  
  6. re = new RegExp(“\?”);//正确,将匹配?  
  7. alert(re.test(str));//true  

既是双重转义这么不和谐,所以照旧用正则表达式字面量的宣示方式 

什么样在正则表明式中选择特殊字符? 

  1. //ASCII格局用十九进制数来表示非常字符  
  2. var re = /^x43x4A$/;//将匹配CJ  
  3. alert(re.test(“CJ”));//true  
  4. //也可采纳八进制格局  
  5. re = /^103112$/;//将匹配CJ  
  6. alert(re.test(“CJ”));//true  
  7. //还足以使用Unicode编码  
  8. re =/^u0043u004A$/;//使用 Unicode,必需使用u开端,接着是字符编码的二位16进制表现情势  
  9. alert(re.test(“CJ”));  

另处,还会有意气风发对别的的预订义特殊字符,如下表所示: 

字符    描述 
n      换行符 
r      回车符 
t      制表符 
f      换页符(Tab) 
cX     与X对应的主宰字符 
b      退格符(BackSpace) 
v      垂直制表符 
      空字符(“”) 

字符类 —〉轻巧类,反向类,范围类,组合类,预订义类 

  1. //简单类  
  2. var re = /[abc123]/;//将相称abc123那6个字符中贰个  
  3. //负向类  
  4. re = /[^abc]/;//将相称除abc之外的多个字符  
  5. //范围类  
  6. re = /[a-b]/;//将相当小写a-b 二十八个字母  
  7. re = /[^0-9]/;//将异常除0-9 10个字符之处的二个字符  
  8. //组合类  
  9. re = /[a-b0-9A-Z_]/;//将相配字母,数字和下划线  

上面是正则说明式中的预约义类 

代码  等同于                  匹配 
.     IE下[^n],其它[^nr]  相配除换行符之外的别的一个字符 
d    [0-9]                   匹配数字 
D    [^0-9]                  相称非数字字符 
s    [ nrtfx0B]         相配叁个空白字符 
S    [^ nrtfx0B]        相配二个非空白字符 
w    [a-zA-Z0-9_]            相称字母数字和下划线 
W    [^a-zA-Z0-9_]           相称除字母数字下划线之外的字符 

量词(下表量词单个现身时都已贪婪量词State of Qatar 

代码  描述 
*     相称前边的子表明式零次或频仍。例如,zo* 能匹配 “z” 以及 “zoo”。
* 等价于{0,}。 
+     匹配前面包车型地铁子表达式三回或频仍。比如,’zo+’ 能相称 “zo” 甚至”zoo”,但无法相配 “z”。+ 等价于 {1,}。 
?     相称前边的子表达式零次或一回。举个例子,”do(es卡塔尔?” 能够相称 “do” 或
“does” 中的”do” 。? 等价于 {0,1}。 
{n}   n 是一个非负整数。相配鲜明的 n 次。举个例子,’o{2}’ 不可能相称 “鲍勃”
中的 ‘o’,可是能相称 “food” 中的八个 o。 
{n,}  n 是三个非负整数。最少相配n 次。比方,’o{2,}’ 不能够相称 “鲍勃” 中的
‘o’,但能匹配 “foooood” 中的全数 o。’o{1,}’ 等价于 ‘o+’。’o{0,}’
则约等于 ‘o*’。 
{n,m} m 和 n 均为非负整数,在那之中n <= m。起码相配 n 次且最多相称 m
次。刘, “o{1,3}” 将相称 “fooooood” 中的前多少个 o。’o{0,1}’ 等价于
‘o?’。请当心在逗号和五个数以内无法有空格。 

贪婪量词与惰性量词 

•用贪婪量词进行相称时,它首先会将整会字符串当成一个合营,假若合作的话就淡出,借使不合作,就截去最终三个字符举行相称,假使不包容,继续将最后一个字符截去举办相配,直到有格外结束。直到未来大家相见的量词都是贪婪量词 
•用惰性量词进行相称时,它首先将第二个字符当成三个合作,如若成功则脱离,假如失利,则测量试验前三个字符,依些扩大,直到遇见合适的相配结束 

惰性量词仅仅在贪婪量词前面加个”?”而已,如”a+”是贪心匹配的,”a+?”则是惰性的 

  1. var str = “abc”;  
  2. var re = /w+/;//将匹配abc  
  3. re = /w+?/;//将匹配a  

多行情势 

  1. var re = /[a-z]$/;  
  2. var str = “abncdef”;  
  3.     alert(str.replace(re,”#”));//abncde#  
  4.     re =/[a-z]$/m;  
  5.     alert(str.replace(re,”#”));//a#ncde#  

分组与非捕获性分组 

  1. re = /abc{2}/;//将匹配abcc  
  2. re = /(abc){2}/;//将匹配abcabc  
  3. //上边的分组都以捕获性分组  
  4. str = “abcabc ###”;  
  5. arr = re.exec(str);  
  6. alert(arr[1]);//abc  
  7. //非捕获性分组 (?:卡塔尔(قطر‎  
  8. re = /(?:abc){2}/;  
  9. arr = re.exec(str);  
  10. alert(arr[1]);//undefined  

候选(相当于所说的“或”) 

  1. re = /^a|bc$/;//将合营起来地点的a或收尾地点的bc  
  2. str =”add”;  
  3. alert(re.test(str));//true  
  4. re = /^(a|bc)$/;//将匹配a或bc  
  5. str =”bc”;  
  6. alert(re.test(str));//true  

当包蕴分组的正则表明式举行过test,match,search这一个格局之后,每一种分组都被放在叁个奇特的地点以备今后接收,这几个囤积是分组中的特殊值,大家誉为反向引用 

  1. var re = /(A?(B?(C?)))/;  
  2. /*上面的正则表明式将逐一发生八个分组 
  3. (A?(B?(C?State of Qatar卡塔尔(قطر‎卡塔尔 最外侧的 
  4. (B?(C?)) 
  5. (C?)*/  
  6. str = “ABC”;  
  7. re.test(str卡塔尔(قطر‎;//反向引用被积累在RegExp对象的静态属性1—1—9中  
  8. alert(RegExp.$1+”n”+RegExp.$2+”n”+RegExp.$3);  
  9. //反向援引也得以在正则表达式中利用1 ,2…那类的形式利用  
  10. re = /d+(D)d+1d+/;  
  11. str = “2008-1-1”;  
  12. alert(re.test(str));//true  
  13. str = “2008-4_3”;  
  14. alert(re.test(str));//false  

选用反向援用能够须求字符串中某多少个地点上的字符必得相符.其余,在replace那类方法中可用特殊字符体系来代表反向引用 

  1. re = /(d)s(d)/;  
  2. str = “1234 5678”;  
  3. alert(str.replace(re,”221″State of Qatar卡塔尔(قطر‎;//在这里个里面1代表第三个分组1234,1意味着第二个分组1234,2则意味5678  

别的——〉正向前瞻,用来捕获出未来一定字符在此之前的字符,唯有当字符前面跟着某些特定字符才去捕获它。与正向预后对应的有负向前瞻,它用异常独有当字符前边不随着有些特定字符时才去相称它。在实行前瞻和负向前瞻之类的演算时,正则表明式引擎会小心字符串后边的部分,不过却不移动index 

  1. //正迈入瞻  
  2. re = /([a-z]+(?=d))/i;  
  3. //大家要同盟前边跟一个数字的单词,然后将单词重返,而不要回来数字  
  4. str = “abc every1 abc”;  
  5. alert(re.test(str));//true  
  6. alert(RegExp.$1);//every  
  7. alert(re.lastIndex卡塔尔国;//使用前瞻的低价是,前瞻的内容(?=d卡塔尔国并不会当成一遍相称,下一次合营仍从它初步  
  8. //负向前瞻(?!)  
  9. re = /([a-z](?!d))/;i  
  10. //将合作后边不包罗数字的假名,而且不会回来(?!d卡塔尔(قطر‎中的内容  
  11. str = “abc1 one”;  
  12. alert(re.test(str));  
  13. alert(RegExp.$1);//one  

营造一个表达电子邮箱地址有效性的正则表明式。电子邮箱地址有效性供给(大家暂时那样定义State of Qatar:顾客名只可以分包字母数字以致下划线,最少一人,最多23位,客户名前边紧跟@,前边是域名,域名名称供给只可以分包字母数字和减号(-),况兼无法以减号带头或最后,然后前面是域名后缀(能够有四个),域名后缀必须是点号连上2-4位日文字母 

  1. var re = /^w{1,15}(?:@(?!-))(?:(?:[a-z0-9-]*)(?:[a-z0-9](?!-))(?:.(?!-)))+[a-z]{2,4}$/;
     

 

非博主原创转子下边大神的

by
Aaron:

 

 

 

 

***************************************

 

元字符 

元字符是表明式语法的意气风发部分,在正则表明式中用到的有所元字符有:{ [ (
^ $ | ) ] } ? * + – 
如匹配三个问号:var reQMark = /?/; 或 var reQMark = new
RegExp(“\?”State of Qatar; //注意这里是四个反斜杠,双重转义  

xxx 查找以八进制数 xxx 规定的字符,如:/142/为字符b xdd
查找以十七进制数 dd 规定的字符,如:/x62/为字符b uxxxx
查找以十七进制数 xxxx 规定的 Unicode 字符,如:/u0062/为字符b r
查找回车符 n 查找换行符 f 查找换页符 t 查找制表符 v
查找垂直制表符 a 查找alert字符 e 查找escape字符 cX
查找与X相对应的支配字符 查找 NULL 字符 .
查找单个字符,除了换行和行截至符,等同于[^nr] w
查找单词字符,等同于[a-zA-Z_0-9] W
查找非单词字符,等同于[^a-zA-Z_0-9] d 查找数字,等同于[0-9] D
查找非数字字符,等同于[^0-9] s 查找空白字符,等同于[
tnx0Bfr],x0B为垂直tab和t一样 S
查找非空白字符,等同于[^ tnx0Bfr]

方括号 

[abc] 查找方括号之间的别的字符 [^abc] 查找任何不在方括号之间的字符
[0-9] 查找任何从 0 至 9 的数字 [a-z] 查找任何从小写 a 到小写 z
的字符 [A-Z] 查找任何从大写 A 到大写 Z 的字符 [A-z] 查找任何从大写 A
到小写 z 的字符 [adgk] 查找给定会集内的别的字符 [^adgk]
查找给定会集外的别的字符

量词 
? 相配任何带有零个或二个的字符串,如:ba?d相配bd、bad 

  • 非凡任何带有最少三个的字符串,如:ba+d相称bad、baad 
    * 相配任何带有零个或多少个的字符串,如:ba*d匹配bd、bad、baad 
    {n} 相配包括恰好现身n次的连串的字符串,如:ba{1}d相配bad 
    {n,m} 相称包括起码n次但不超越m次
    的队列的字符串,如:ba{0,1}d匹配bd、bad 
    {n,}
    相配富含起码现身n次的种类的字符串,如:ba{0,}相称bd、bad、baad、baaad   
    贪婪量词:先看一切的字符串是还是不是合作,假使开采未有相称,二〇一八年该字符串中的最终四个字符并再度尝试,如:?、+、*、{n}、{n,
    m}、{n, },暗中认可就为贪婪量词 
    惰性量词:先看字符串中的第一个假名是还是不是同盟,就算单独这三个字符还远远不足,就读入下叁个字符,组成三个字符的字符串,与贪婪量词的干活情势刚巧相反,如:??、+?、*?、{n}?、{n,
    m}?、{n, }? 
    支配量词:只尝试相配整个字符串,纵然全勤字符串不能发生相配,不做尤其尝试,如:?+、++、*+、{n}+、{n,
    m}+、{n, }+  

var sToMatch = “abbbaabbbaaabbb1234″; var re1 = /.*bbb/g;
//相配结果为”abbbaabbbaaabbb” var re2 = /.*?bbb/g;
//独有惰性量词工夫相称成功,相配结果为”abbb”,”aabbb”,”aaabbb” var re3 =
/.*+bbb/g; //相配不了,直接报错

复杂形式之分组:经过豆蔻梢头层层括号包围生龙活虎三种字符、字符类以至量词来行使的 
/(dog){2}/  匹配”dogdog” 
/([bd]ad?)*/  匹配空, “ba”, “da”, “bad”, “dad” 
/(mom( and dad)?)/  匹配”mom”, “mom and dad” 
/^s*(.*?)s+$/  相称首尾的空白字符,也得以用/^s+|s+$/g 
复杂情势之反向引用:也叫捕获性分组,依照从左到右遭受的左括号字符的种种举办创办和数码的,比如表达式(A?(B?(C?State of Qatar卡塔尔(قطر‎卡塔尔(قطر‎将生出编号从1-3的八个反向引用:(A?(B?(C?卡塔尔(قطر‎卡塔尔(قطر‎卡塔尔(قطر‎、(B?(C?卡塔尔State of Qatar、(C?State of Qatar 
反向援引有三种区别的选用方法: 
先是,使用正则表达式对象的test(卡塔尔、match(State of Qatar或search(卡塔尔(قطر‎方法后,反向援用的值能够从RegExp布局函数中获得,如: 

var sToMatch = “#123456789”; var reNumbers = /#(d+卡塔尔(قطر‎/;
reNumbers.test(sToMatchState of Qatar; alert(RegExp.$1State of Qatar;
//”123456789″,$1保存了第二个反向援用,依次能够用$2,$3…

接下来,能够直接在概念分组的表明式中带有反向引用,通过应用非常转义连串如1、2等实现 

var sToMatch = “dogdog”; var reDogdog = /(dog)1/; //等同于/dogdog/
alert(reDogdog.test(sToMatch)); //true

其三,反向引用能够用在String对象的replace(卡塔尔方法中,通过动用特殊字符体系如$1、$2等落实 

var sToChange = “1234 5678”; var reMatch = /(d{4}) (d{4})/;
alert(sToChange.replace(reMatch, “$2 $1″)); //”5678 1234”

复杂方式之候选:运用管道符(|State of Qatar放在八个单身的方式里面 

var reBadWords = /badword | anotherbadword/gi; var sUserInput = “This is
a String using badword1 and badword2.”; var sFinalText =
sUserInput.replace(reBadWords, function(sMatch){ return
sMatch.replace(/./g, “*”State of Qatar; //用星号替换敏感词中的每一个字母 }State of Qatar;

复杂情势之非捕获性分组:对照捕获性分组,不会创制反向援引,在较长的正则表达式中,存款和储蓄反向引用会裁减相称速度,通过利用非捕获性分组,仍旧可以享有与相称字符串体系同样的力量,而不须要存放结果的支付 

var sToMatch = “#123456789”; var reNumbers = /#(?:d+State of Qatar/;
//只须求在左括号的前边加上二个问号和四个紧跟的冒号就可制造八个非捕获性分组
reNumbers.test(sToMatch卡塔尔; alert(RegExp.$1State of Qatar;
//””,输出空字符串是因为该分组是非捕获性的
alert(sToMatch.replace(reNumbers, “abcd$1″State of QatarState of Qatar;
//输出结果是”abcd$1″并非”abcd123456789″,不可能选用其它反向援用

又如: 

String.prototype.stripHTML = function(卡塔尔(قطر‎{ var reTag = //g;
//相称全部的HTML标签,防止插入恶意HTML代码 return this.replace(reTag,
“”State of Qatar; }

复杂方式早先瞻:告知正则表达式运算器向前看一些字符而不挪窝其职责,存在正向前瞻(检查接下去现身的是或不是某些特定字符集卡塔尔国和负向前瞻(检查接下去的不应有现身的一定字符集卡塔尔 
正迈入瞻(?=n卡塔尔国 相配任何其后交接钦点字符串 n 的但不满含n的字符串,注意这里的括号不是分组 
负向前瞻(?!n卡塔尔 匹配任何其后未有连接钦点字符串 n 的字符串,如:  

var sToMatch1 = “bedroom”; var sToMatch2 = “bedding”; var reBed1 =
/(bed(?=room))/; var reBed2 = /(bed(?!roomState of Qatar卡塔尔国/;
alert(reBed1.test(sToMatch1卡塔尔State of Qatar; //true alert(RegExt.$1卡塔尔(قطر‎;
//输出”bed”实际不是”bedroom” alert(reBed1.test(sToMatch2State of Qatar卡塔尔国; //false
alert(reBed2.test(sToMatch1卡塔尔(قطر‎卡塔尔; //false alert(reBed2.test(sToMatch2卡塔尔(قطر‎State of Qatar;
//true alert(RegExt.$1State of Qatar; //输出的也是”bed”

复杂格局之边界:用李晓明则表明式中代表方式的职位 
n$ 相称任何结尾为 n
的字符串,如:/(w+).$/匹配行尾单词”one.”,”two.”等 
^n 相称任何最初为 n
的字符串,如:/^(.+?卡塔尔国b/相称初叶地点后的贰个或多少个单词字符 
b 查找坐落于单词的起来或最终的匹配,如:/b(S+?)b/g 或
/(w+卡塔尔(قطر‎/g相配从字符串中抽出单词 
B 查找不处于单词的伊始或最终的相称 
复杂方式之多行情势: 

var sToMatch = “First secondnthird fourthnfifth sixth”; var
reLastWordOnLine = /(w+)$/gm; alert(sToMatch.match(reLastWordOnLine));
//输出[“second”, “fourth”, “sixth”]而不只是”sixth”

RegExp对象的属性和艺术: 
global  //RegExp 对象是还是不是持有标记 g 
ignoreCase  //RegExp 对象是不是具有标识 i 
multiline  //RegExp 对象是还是不是富有标记 m 
source  //正则表明式的源文本 
lastIndex 
//二个整数,标示下三遍相称钭会从哪些字符地方上马(独有当使用exec(State of Qatar和test(卡塔尔函数才会填入,不然为0卡塔尔 
确实使用到的是lastIndex,如:  

var sToMatch = “bbq is short for barbecue”; var reB = /b/g;
reB.exec(sToMatchState of Qatar; alert(reB.lastIndex卡塔尔(قطر‎; //1,相配岗位是0,lastIndex为1
reB.exec(sToMatch卡塔尔; alert(reB.lastIndex卡塔尔(قطر‎; //2 reB.exec(sToMatch卡塔尔(قطر‎;
alert(reB.lastIndexState of Qatar; //18 reB.lastIndex = 0; //重头最早匹配reB.exec(sToMatchState of Qatar; alert(reB.lastIndex); //1并不是21

静态属性 
input,短名为$_,最终用于相配的字符串(传递给exec(卡塔尔或test(卡塔尔(قطر‎的字符串卡塔尔 
leftContext,短名称为$^,在上次特别的先头的子串 
rightContext,短名称叫$^,在上次合营之后的子串 
lastMatch,短名称为$&,最后相称的字符 
lastParen,短名称叫$+,最终相配的分组 
multiline,短名为$*,用于钦定是或不是具备的表明式都接纳多行方式的布尔值,分化于其余性质,不依赖最后二回进行的协作,它可以安装富有的正则表明式的m选项,RegExp.multiline
= “true”;,注意IE和Opera不运营它  

var sToMatch = “this has been a short, short summer”; var reShort =
/(s卡塔尔(قطر‎hort/g; reShort.test(sToMatch卡塔尔国; alert(RegExg.inputState of Qatar; //”this has
been a short, short summer”; alert(RegExg.leftContext卡塔尔; //”this has been
a “; alert(RegExg.rightContext卡塔尔(قطر‎; //”, short summer”;
alert(RegExg.lastMatchState of Qatar; //”short” alert(RegExg.lastParen卡塔尔; //”s”
compile(卡塔尔(قطر‎ //编写翻译正则表明式 alert(reCat.exec(“a cat, a Cat, a cAt caT”卡塔尔State of Qatar;
//重返叁个数组,数组中的第3个条约是首先个门户拾贰分,别的的是反向引用alert(reCat.test(“cat”卡塔尔(قطر‎卡塔尔国; //true,检索字符串中钦赐的值,重临 true 或
false。

支撑正则表达式的String对象的措施 

var sToMatch = “a bat, a Cat, a fAt, a faT cat”; var reAt = /at/gi;
alert(sToMatch.match(reAt卡塔尔国卡塔尔(قطر‎; //再次来到三个富含在字符串中的全体相配的数组
alert(sToMatch.search(reAtState of QatarState of Qatar;
//输出第3回在字符串中现身的岗位3,全局相称g在search(卡塔尔国时不起成效alert(sToMatch.replace(reAt, “Dog”卡塔尔国卡塔尔(قطر‎; //替换与正则表明式相配的子串
alert(sToMatch.replace(reAt, function(sMatch卡塔尔{ return “Dog”; }卡塔尔国卡塔尔(قطر‎;
alert(sToMatch.split(/,/State of Qatar卡塔尔(قطر‎; //把字符串分割为字符串数组

常用情势 
日期:/(?:0[1-9]|[12][0-9]|3[01])/(?:0[1-9]|1[0-2])/(?:19|20d{2})/ 
URL:/^ 
E-mail地址:/^(?:w+.?)*w+@(?:w+.?)*w+$/ 
国内电话号码:d{3}-d{8}|d{4}-d{7} 
腾讯QQ号:[1-9][0-9]{4,} 
邮政编码:[1-9]d{5}(?!d) 
身份证:d{15}|d{18} 
ip地址:d+.d+.d+.d+ 
普通话字符: [u4e00-u9fa5] 
双字节字符(包罗汉字在内卡塔尔(قطر‎:[^x00-xff] 
    String.prototype.len=function(){return
this.replace([^x00-xff]/g,”aa”).length;} 
全角字符:/[^uFF00-uFFFF]/g 
分外特定数字: 

^[1-9]d*$    //相配正整数 ^-[1-9]d*$   //匹配负整数
^-?[1-9]d*$   //相称整数 ^[1-9]d*|0$ 
//相配非负整数(正整数 + 0) ^-[1-9]d*|0$  
//相配非正整数(负整数 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$   //相配正浮点数
^-([1-9]d*.d*|0.d*[1-9]d*卡塔尔(قطر‎$  //相称负浮点数
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0卡塔尔$ 
//匹配浮点数 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$  
//相称非负浮点数(正浮点数 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$  //相称非正浮点数(负浮点数

  • 0)

是否很完善,很详细,感到不错的就把那随笔能够珍藏,js正则表明式很关键的学习环节,大家自然敏而好学。

发表评论

电子邮件地址不会被公开。 必填项已用*标注