ECMAScript正则表明式

1.什么是正则表明式 2.JavaScript RegExp 对象   RegExp 对象属性global,ignoreCase,ignoreCase,multiline,source   RegExp 对象方法compile、test、exec 3.协助正则表明式的 String 对象的艺术

4.初次字符表

 

啊是正则表明式

   正则表明式是于用来配合配字符串中之字符组合的情势。在JavaScript中,正则说明式也是目的。这种情势可吃用来RegExpexectest术与 Stringmatchreplacesearchsplit方法。

JavaScript RegExp对象

   RegExp
对象表示正则表明式,它是本着字符串执行情势匹配的劲工具。

   开创正则表明式两栽办法:

   正则表达式字面量

/pattern/attributes
例   var re = /ab+c/;

    调用RegExp目标的构造函数,如下所示:

new RegExp(pattern, attributes);
例   var re = new RegExp("ab+c");

  参数
  参数 pattern
是一个字符串,指定了正则表明式的情势或外正则表明式。
  参数 attributes 是一个可选的字符串,包含属性 “g”、”i” 和
“m”,分别用于指定全局匹配、区分轻重缓急写的分外与多行匹配。ECMAScript
标准化从前,不帮助 m 属性。若是 pattern
是正则表明式,而不是字符串,则要看略该参数。

  RegExp对象属性:

属性 描述 FF IE
global RegExp 对象是否具有标志 g。 1 4
ignoreCase RegExp 对象是否具有标志 i。 1 4
lastIndex 一个整数,标示开始下一次匹配的字符位置。 1 4
multiline RegExp 对象是否具有标志 m。 1 4
source 正则表达式的源文本。 1 4

  RegExp对象方法:

方法 描述 FF IE
compile 编译正则表达式。 1 4
exec 检索字符串中指定的值。返回找到的值,并确定其位置。 1 4
test 检索字符串中指定的值。返回 true 或 false。 1 4

  compile方法定义跟用法,用之无多,不做过多讲:

  compile() 方法用于在本子执行进程遭到编译正则表明式。

  compile() 方法吧可用以转移和再一次编译正则表达式。

 

  exec方法定义跟用法

  exec()方法用于检索字符串中之正则表明式的配合。再次回到一个勤组,其中存放匹配的结果。假诺无找到匹配,则归回值为
null。

<script type="text/javascript">

var str = "Visit W3School, W3School is a place to study web technology."; 
var patt = new RegExp("W3School","g");
var result;

//返回匹配到的结果
while ((result = patt.exec(str)) != null)  {
  document.write(result);
  document.write("<br />");
  document.write(patt.lastIndex);
  document.write("<br />");
 }
</script>

  结果:W3School
      14
     W3School
      24

  

  test定义及用法:

  test() 方法用于检测一个字符串是否配合有形式。匹配重返true,否则回 false。

RegExpObject.test(string)

  例子:

<script type="text/javascript">
var str = "Visit W3School";
var patt1 = new RegExp("W3School");

var result = patt1.test(str);

document.write("Result: " + result);
</script>

  结果  :Result: true

 总结:

  1.exec办法是使正则表明式的极其劲和最好缓慢的艺术。固然它们成地配合配regexp和字符串String,它会面回一个数组。数组中产标为0的要素将富含正则说明式regexp匹配的字符串。下标为1的素是分组1破获的文件,下标为2底因素是分开组2捕获的文书,以此类推。尽管匹配失利,它会晤再次回到null。

  2.test主意是使正则表明式的极简单易行与极其抢之计。即使该regexp匹配string,它回到true;否则,它回到false。

襄助正则表达式的String对象的模式

方法 描述 FF IE
search 检索与正则表达式相匹配的值。 1 4
match 找到一个或多个正则表达式的匹配。 1 4
replace 替换与正则表达式匹配的子串。 1 4
split 把字符串分割为字符串数组。 1 4

  1.string.search(regexp)

  search方法和indexOf方法接近,只是她接受一个正则表达式对象作为参数而不是一个字符串。假如找到匹配,它回到第1个门当户对的首字符地方,假设没有找到匹配,则赶回-1。此方法会忽略g标识,且并未position参数。它又忽略
regexp 的 lastIndex
属性,并且连续由字符串的开展开搜寻,这表示它连接回到 stringObject
的首先只门当户对的岗位。

  注释:要举行忽略大小写的摸索,请加标志 i。

例var text = 'and in it he says "Any damn fool could';
        var pos = text.search(/["']/)  //结果为18

  2.strng.match(regexp)和stringObject.match(searchvalue)

  match方法深受字符串和一个正则表达式举办匹配。它依照g标识来支配哪些进展匹配。就算没有g标识,那么调用string.match(regexp)的结果及调用regexp.exec(string)的结果同样。不过,倘诺带有g标识,那么其相当成一个含有匹配(除捕获组之外)的数组。

var str="Hello world ll world!"
alert(str.match("world!"));     //结果world
console.log(str.match(/world/g));  //结果[world,world]

  3.string.split(separator,limit)

  split方法将那多少个string分割成有来创建一个字符串数组。可选参数limit可以界定为剪切的一对数量。separator参数可以是一个字符串或者一个正则表明式。

    例 var digits = '0123456789';
        var a = digits.split('',5);  //a是['0,'1','2','3','4','5'];

  4.stringObject.replace(regexp/substr,replacement)

  replace方法对string举行搜和替换操作,并赶回一个初的字符串。参数searchValue可以是一个字符串或者一个正则表明式对象。

  

参数 描述
regexp/substr

必需。规定子字符串或要替换的模式的 RegExp 对象。

请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。

replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数。

  返回值
  一个初的字符串,是为此 replacement 替换了 regexp
的率先次于匹配或有所匹配之后收获的。
  说明
  字符串 stringObject 的 replace()方法执行的凡摸索并替换的操作。它将在 stringObject 中寻找和 regexp
相匹配的子字符串,然后据此 replacement 来替换那一个子串。假如 regexp
具有全局标志 g,那么 replace()方法将替换所有匹配的子串。否则,它只有替换第一只门当户对配子串。
  replacement
可以是字符串,也得是函数。假使其是字符串,那么每个匹配都将出于字符串替换。但是replacement 中的 $
字符具有特定的义。如下表所示,它表达从格局匹配获得的字符串将用以替换。

字符 替换文本
$1、$2、…、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
$& 与 regexp 相匹配的子串。
$` 位于匹配子串左侧的文本。
$’ 位于匹配子串右侧的文本。
$$ 直接量符号。

  用用这么些组号,则发只问题即是正则表达式要存在组号,关于组则相应的分组匹配自表明式,一个误区:

  注意:

  (…)捕获型分组,又有何不可叫字表达式,捕获型分组会复制它所匹配的文件,并以这厝result数组里,每个捕获分组都汇合给指定一个码。
  (?:)非捕获性分组,仅开简单的匹配,并无会面捕获所匹配的公文,性能于捕获性分组效能高,非捕获性分组不会见扰乱捕获型分组的编号。

  能反映replace用法的例证:

  于本例中,我们用将 “Doe, 约翰” 转换为 “约翰 Doe” 的款型:

name = "Doe, John";
name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");

  于本例中,大家以拿具备的花引号替换为直引号:

name = '"a", "b"';
name.replace(/"([^"]*)"/g, "'$1'");

  于本例中,大家将拿字符串中享有单词的首字母都转换为甚写:

name = 'aaa bbb ccc';
uw=name.replace(/\b\w+\b/g, function(word){
  return word.substring(0,1).toUpperCase()+word.substring(1);}
  );  

  replace多少个经例子区分其分别就是可以掌握其所以法:

  例一(选取全局匹配加g也是同的结果):

<script type="text/javascript">

name = "Doe, John,12344";

document.write(name.replace(/(\w+)\s*, \s*(\w+),\d+/, function($1,$2){return $2}));
//弹出结果为John
</script>

  例二:

<script type="text/javascript">

name = "Doe, John";

document.write(name.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1"));
//结果为 John,Doe
</script>

  例三:

<script type="text/javascript">

name = "Doe, John,12344";

document.write(name.replace(/(\w+)\s*, \s*(\w+),\d+/, function($2){return $2}));
//弹出结果为Doe, John,12344
</script>

敲定,要想回到匹配的么组元素,必须以匹配的组都作为参数。

元字符表

  处女字符是正则表明式的同等片段,当我们只要配合正则表明式本身时,必须对这个元字符转义.下边是正则表明式用到之有着元字符

  注意:碰巧则转义,假若对特殊字符转义拿卡不准时,可以叫另外特殊字符都丰裕一个\前缀来若该配面化,注意\前缀不可能要字母或数字字面化。常见的要转义的字符
-( [ { \ ^ $ | ) ? * + .等

元字符 描述
. 查找单个字符,除了换行和行结束符。
\w 查找单词字符。
\W 查找非单词字符。
\d 查找数字。
\D 查找非数字字符。
\s 查找空白字符。
\S 查找非空白字符。
\b 匹配单词边界。
\B 匹配非单词边界。
\0 查找 NUL 字符。
\n 查找换行符。
\f 查找换页符。
\r 查找回车符。
\t 查找制表符。
\v 查找垂直制表符。
\xxx 查找以八进制数 xxx 规定的字符。
\xdd 查找以十六进制数 dd 规定的字符。
\uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

 

 

  最后加一下正则懒惰/贪婪规则:

  *?重复任意次,但尽可能少重复。

  +?重复1赖仍然另行累,但尽可能少重复。

  ??重复0不良仍然1不良,但尽可能少重复。

  {n,m}?重复n到m次,但尽可能少重复。

  {n,}?重复n次以上,但尽可能少重复。

 

 

材料来源于:
正则表明式30秒钟入门教程
http://deerchao.net/tutorials/regex/regex.htm

       
JS正则表达式-亚伦(Aaron)

http://www.cnblogs.com/aaronjs/archive/2012/06/30/2570970.html

        
  javascript正则表达式
http://www.cnblogs.com/rubylouvre/archive/2010/03/09/1681222.html

       js
常用正则表明式表单验证代码(javascript)

http://www.qingdou.me/3716.html

    
  javascript常由此正则表达式汇总
http://www.zhufengpeixun.cn/jishuziliao/javaScriptzhuanti/2011-11-15/157.html

     正则表明式在线工具
http://tool.lu/regex/