JavaScript正则表达式初级用法

来源:互联网 发布:linux 卸载svn1.7 编辑:程序博客网 时间:2024/05/16 11:37

JavaScript正则表达式

var str = "abc";

str = str.replace(/a|b/g,'A');

用两个斜杠括起来的写法是正则表达式, 就像用引号括起来是字串, 这个正则表达式的意思是把字串里的a或b替换成大写字母A. 后面斜杠后面的g是全局匹配的意思 如果没有这个g, 则只替换str字串第一个匹配. 因为符号|是或的意思, 所以如果想查找字符"|", 应该在前面加上反斜杠, 例如str.replace(/\|/g,"A")将会把str的字符"|"全部换成大写的"A". 正则表达式有一系列的这种需要转义的符号.


str.replace(/(a)(b)/g,"$1"), 这个正则表达式把字符串里面的"ab"字符换成a, $1就是代表第一个匹配, 也就是第一个小括号里的内容, 如果是str.replace(/(a)(b)/g,"$2"), 就会把"ab"替换成"b", $2表示第二个匹配, 总共有9个$匹配可以使用.


str.replace(/(a|b)/g,"\\$1"), 这个语句把字符串里的"a"或"b", 分别替换成"\a"或"\b", 因为反斜杠是转义符, 所以和字串一样, 需要加转义. 总之小括号的位置就是$的序列号. 如果表达式里没有小括号, $1将会被看成"$1"字符, 而不是再代表匹配的字符.


str.replace(/(a)(b)(c))/g,function(){return "A"}), 这种写法可以不用使用$符号就能获得匹配的细节, 用于回调的function实际上有m+3个参数, m是正则表达式里"()"的对数, 即使是或的关系也算数, 比如/(a)(b)|(c))/g, 这个表达式, 同样有6个参数. 第一个参数是匹配的字串(这里就是ab或c), 倒数第一个参数是原来的整个字串也就是str, 倒数第二个参数是匹配的首位置.剩下的m个参数是没括号里的子匹配, 比如/(a)(b)(c))/g, 那么这3个参数分别是a,b,c. 而/(a)(b)|(c))/g而言, 分别是a,b,null或者,null,null,c, 看是匹配的哪个表达式. 函数的返回值是要替换的内容.


中括号可以指定一个字符范围 比如/[a-z]/g, 那么只要是小写英文字母就会匹配.

大括号指定字符的重复次数 比如/a{2,9}/g,那么连续2个到9个的a都会匹配. 可以不写后面比如/a{2,}/g, 那么大于等于2个的连续a都会匹配.


/a*/g等价于/a{0,}/g, /a+/g等价于/a{1,}/g, /a?/g等价于/a{0,1}/g.

/^a/g只匹配开头.

/a$/只匹配结尾.

/[abc]/g匹配a,b,c任意一个字符. 其实就是"|"的单字符省略写法.

/[a-zA-Z][a-zA-Z0-9_]+/g; 匹配前面是字母, 后面是字母数字或者下划线且多于1个, 所以匹配的项至少为2个字符, 如果+换成*子一个字母也会匹配.

/[^abc]/g, 不是a,b,c之一的, 注意此时^在中括号的里面, 如果在外面, 表示匹配字串开头.


/./g匹配除了换行符以外的任意字符

\d匹配数字, \D匹配非数字, 而/\d|\D/g可以匹配任意字符.


更多:http://www.cainiao8.com/web/js_note/js_regular_expression.html

原创粉丝点击