正则表达式
概述正则表达式是被用来匹配字符串中的字符组合的模式。在JavaScript中,正则表达式也是对象。 创建正则表达式var re = /abc/; // 使用对象字面量 var re = new RegExp('ab+c'); // 调用构造函数 上面两种方法都可以用来创建正则表达式。如果正则表达式固定不变,建议使用第1种方法创建,这样性能会高一些。如果事先不知道要创建什么样的正则表达式则使用第2种方法。第1种方法的斜杠,第2中方法的单引号或者双引号,均是1种固定写法。 正则表达式的模式使用简单的模式简单模式就是使用一些简单的字符,直接进行匹配。比如 特殊字符一些复杂的正则表达式匹配,需要用到一些特殊字符,在JavaScript中这些特殊字符及其功能如下。默认量词匹配模式为贪婪模式,也就是匹配尽可能多的字符。
详细介绍 在正则表达式中出现有3种可能性。第1种,在非特殊字符之前加入
匹配输入的开始。例如
匹配输入的结束。
匹配前一个表达式0次或多次,等价于{0,}。例如:
匹配前一个表达式1次或多次,等价与{1,}。
匹配前面1个表达式0次或者1次,等价于{0,1}。例如: 如果紧跟在任何量词
小数点将匹配除换行符之外的任何单个字符。例如:/.n/将会匹配 "nay,anapple is on the tree" 中的 'an' 和 'on',但是不会匹配 'nay'。
匹配 'x' 并且记住匹配项,括号被称为 捕获括号。示例:
匹配'x'或'y'。示例:/green|red/匹配"green apple"中的'green'和"red apple"中的'red'。
n是一个正整数,匹配前面一个字符刚好发生了n次。示例:/a{2}/不会匹配"candy"中的'a',但是会匹配"caandy"中所有的a,以及"caaaandy"中前2个a。
n和m都是正整数,并且n<=m。匹配至少n次,最多m次。示例:/a{1,3}/匹配"cndy"失败,匹配"candy"结果为'a',匹配"caaaaaaandy"结果为'aaa'。
字符集合。将匹配在中括号中的任意字符,包括转义序列,特殊字符例如 例如,[abcd] 和[a-d]是一样的。他们都匹配"brisket"中得'b',也都匹配"city"中的'c'。/[a-z.]+/ 和/[w.]+/都匹配"test.i.ng"中得所有字符。
一个反向字符集。匹配任何没有包含在方括号中的字符。例如,[^abc] 和 [^a-c] 是一样的。
匹配一个词的边界。 示例:/bm/匹配"moon"中得'm' /oob/并不匹配"moon"中得'oo',因为'oo'被一个词汇字符'n'紧跟着。 /oonb/匹配"moon"中得'oon',因为'oon'是这个字符串的结束部分。这样他没有被一个词汇字符紧跟着。
匹配一个非单词边界。他匹配一个前后字符都是相同类型的位置:都是单词或者都不是单词。一个字符串的开始和结尾都被认为是非单词。 例如,/B../匹配"noonday"中得'oo',而/yB./匹配"possibly yesterday"中得'ye'
匹配一个数字。等价于[0-9]。 例如, /d/ 或者 /[0-9]/ 匹配"B2 is the suite number."中的'2'。
匹配一个非数字字符。等价于[^0-9]。 例如, /D/ 或者 /[^0-9]/ 匹配"B2 is the suite number."中的'B' 。
匹配一个空白字符,包括空格、制表符、换页符、和换行符。 例如,/sw*/ 匹配"foo bar."中的' bar'。
匹配一个非空白字符。例如, /Sw*/ 匹配"foo bar."中的'foo'。
匹配一个单字字符(字母、数字或者下划线)。等价于[A-Za-z0-9_]。 示例:/w/ 匹配 "apple," 中的 'a',"$5.28,"中的 '5' 和 "3D." 中的 '3'。
匹配1个非单字字符,等价于[^A-Za-z0-9_]。 示例:例如,/W/ 或者 /[^A-Za-z0-9_]/ 匹配 "50%." 中的 '%'。 使用正则表达式正则表达式可以被用于RegExp的exec和test方法以及String的match、replace、search和split方法。 RegExp.prototype.test()概述 String.prototype.match()概述 str.match(regexp); 示例 var str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var regexp = /[A-E]/gi; var matches_array = str.match(regexp); console.log(matches_array); // ['A','B','C','D','E','a','b','c','d','e'] 参考链接 使用括号的子字符串匹配在正则表达式的模式中使用括号,可以把括号里面的内容"记住"。在脚本中可以按顺序依次使用 var re = /(w+)s(w+)/; var str = "Hello World"; var newstr = str.replace(re, "$2AND$1"); console.log(newstr); // → WorldANDHello 通过标志进行高级搜索正则表达式一共有4个标志。这里只介绍最常用最主要的两个 包含标志的正则表达式语法如下: var re = /pattern/flags; // or var re = new RegExp("pattern","flags"); var str = "I am a boy. She is a girl"; /A/.test(str); // → false /a/i.test(str); // → true str.match(/a/); // → ["a"] str.match(/a/g); // → ["a","a","a"] 常用正则表达式
参考资料
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |