首页 > 代码库 > javascript正则表达式笔记(转载)

javascript正则表达式笔记(转载)

在javascript里面的定义

  1、通过RegExp构造函数定义一个正则表达式。第一个参数为正则表达式以字符串传入,第二个参数为修饰符也以字符串传入。

例:var caps = new RegExp("[A-Z]", "g");

  2、直接定义一个正则表达式直接量,表达式右正斜杠符号“/”分隔,后直接跟修饰符。(推荐用这种)

例:var caps = /[A-Z]/g;

javascript正则表达式常用的字符

字符描述例子
[exp] 对于中括号([])包裹的字符序列,正则表达式处理程序会匹配中括号内的任意一个字符 [exp]匹配e,x,p中的任意一个字符
[^exp] 在中括号内前方加上^字符,将匹配中括号外的任意一个符号,除去的意思 [^exp]匹配e、x、p之外的任意一个字符
[exp1-exp2] 使用-连字符表示匹配exp1字符到exp2字符序列中的任意一个字符 [A-Z]匹配A-Z任意一个字符;[0-9]匹配0-9任意一个数字
(exp) 对于小括号包裹的字符序列,正则表达式会以该字符次序确切进行匹配(包含就能匹配) (exp)匹配"exp"这个字符串
(exp1\ exp2) 使用管道字符\
exp+ 表达式后使用+字符,表示只有当该表达式被包含一次或者多次时匹配 exp+匹配exp
\s 匹配空白字符,即空格,tab制表符,回车符 A\sB匹配字符串中含A空白符B
\S 匹配除了空白字符意外的任意一个字符 A\SB匹配A不是空白符任意字符B
\d 匹配从0-9的一个数字  
\D 匹配除了数字以为的任意一个字符  
\w 匹配一个文字字符,即一个字,数字或字母  
\W 匹配除了文字字符意外的任意一个字符  

除了常用的表达式,还有的就是修饰符了,用来定义正则表达式该如何使用的,有三种可能的值,可以作为选项单独使用,也可以多个一次使用。

修饰符描述
g 应用正则表达式在比较字符串中找出所有匹配的项,而不是只返回第一个匹配项
i 应用表达式进行比较匹配的同时,忽略大小写
m 应用表达式对多行的文本进行比较匹配,而不只是比较第一行

javascript正则表达式常见用法

有三种string类型的方法可以使用正则表达式。match()查找出能匹配正则表达式的所有子字符并将结果以字符串数组的形式返回。replace()方法查找和前者相同的子字符并用传入该方法的另一个字符串进行替换。search()只是定位能匹配到正则表达式的第一个子字符串的位置,并以数字序号形式放回字符串在整个字符串中的位置。

    var regEx = /他妈的/g,
        string = "我去你他妈的";
    alert(string.match(regEx));         //他妈的
    alert(string.search(regEx));        //3
    alert(string.replace(regEx, "*"));  //我去你*

replace()特殊用法

可用作javascript字符串的replace()方法第二个参数的特殊字符

字符序列含义例子
$$ 把找到的字符串用一个单独的$字符代替 "Hello World".replace(/o/g, "\$\$");//"Hell\$ W\$rld"
$& 使用第一个参数中所给定的字符串来替换所找到的子字符串 "Hello World".replace(/o/g, "$&");//"Hello World"
$`(ESC下面那个`) 使用所找到的字符串之前的文本来替换该子字符串 "Hello World".replace(/o/g, "$`");//"HellHell WHello Wrld"
$‘ 使用所找到的字符串之后的文本来替换该子字符串 "Hello World".replace(/o/g, "$‘");//"Hell World Wrldrld"
\$1, \$2 当第一个参数中包含的正则表达式使用小括号对进行表达式分组,则可以提取出特定的表达式所匹配的子字符串(\$1对应第一个小括号,\$2对应第二个小括号) "Hello World".replace(/(o)(r)/g, "\$1\$2\$1\$2");//"Hello Wororldd"(查找到or,然后替换成oror

还有一种就是replace() 的第二个参数可以用函数方式传入,然后用函数的返回值来替换原子字符串。

var count = 0;
function replaceWithCount() {
    count = count + 1;
    return count;   
}
alert("Hello World".replace(/o/g, replaceWithCount)); //Hell1 W2rld
alert("Hello World".replace(/\s/g, replaceWithCount)); //Hello3World

总结

这只是我写的作为笔记的正则表达式一些简单的判断和javascript用法。正则表达式还可以很复杂很强大,那就要再你要使用的时候再去挖掘思考了。如果想了解更多,可以学习Mozilla开发者网络上的关于javascript中使用正则表达式的指引介绍。https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions写得更加详细。

javascript正则表达式笔记(转载)