JavaScript备忘录(3)——正则表达式
2013-11-08 10:12
169 查看
正则表达式是用来进行字符串匹配的。
定义正则表达式有两种方法:/wor/或者new RegExp("wor")。
使用方法
在JS中,使用正则表达式的方法有:
字符串的search方法:"hello".search(/e/)返回1。(以0开始的索引,如果未匹配到,返回-1)
字符串的match方法:"hello".match(/e/)返回["e"]。(表示匹配到的字符串,若未匹配,返回空数组)
正则表达式对象的test方法:(/e/).test("hello")返回true。(表示匹配了)
正则表达式对象的exec方法:(/e/).exec("hello")返回["e"]。(表示匹配到的字符串,若未匹配,返回空数组)
\b表示单词的起始和结束位置。比如/\bme\b/可以匹配"me too!",但不能匹配"media player"。
\d表示任意数字(digital)。
\w表示任意字母,数字或下划线(word)。
\s表示任意单个空格或制表符(space)。两个空格必须由两个\s匹配,比如"hi you".match(/\b\s\s\b/)返回[" "](注意有两个空格),而"hi you".match(/\b\s\b/)返回null。
.(点符号)匹配除了换行符的任意字符。
^表示整个字符串的开头。
$表示整个字符串的结尾。
\B,\D,\W,\S,表示\b,\d,\w,\s的逆:非单词起始或结束位置,非数字,等等。
\\,\.,\^,\$等表示转义,如\^表示实际的字符"^"而不是字符串开头。
[]中添加字符表示匹配其中的任一个字符,比如[abc]或[a-c]可以匹配字母a,b或者c,例如"banana".match(/[a-c]/g)返回["b","a","a","a"]。
[]中的^表示反义,比如/[^abc]/表示任意不是a,b或者c的字符,例如"abgbac".match(/[^abc]/)返回["g"],"fref<afr><frf>.match(/<a[^>]+>/)返回["<afr>"],其含义为“尖括号内以a开头的字符串(包括尖括号)”。
{n},表示元素重复了n此。如"hi3456good".match(/\d{3}/)会返回["345"],匹配了索引从2开始的3个数字。
{n,m},表示元素重复了n到m次。如"hi3456good".match(/\d{2,10}/)返回["3456"],因为任意数字出现了2到10次(这里是4次)。
{n,},表示元素至少重复了n次。如"hi3456good".match(/\d{2,}/)返回["3456"]。
*,表示重复任意次(包括零次),等同于{0,},如"higood".match(/hi\d*good/)返回["higood"]。
+,表示重复一次或更多,等同于{1,},如"higood".match(/hi\d+good/)返回null。
?,表示重复零次或一次,等同于{0,1}。
比如"hello Joey".match(/hi|hello/)返回["hello"],"hi Joey".match(/hi|hello/)返回"hi"。
比如,匹配一个0~255之间的数(在匹配IP地址时常用到):/2[0-4]\d|25[0-5]|[01]?\d\d?/。
比如,/^(\d{3}[a-z])*$/.test("123x456y789z")返回true。
使用分组时,会给组别分配组名,并使用\<组名>的形式匹配相同的文本:
比如,/(\b\w+\b)/可以匹配任意一个单词,那么/(\b\w+\b)\s+\1/就可以匹配中间带有空格的两个一样的单词,如"go go"。
JS不支持
"going and watching".match(/\b\w+(?=ing\b)/g);其返回["go", "watch"]。
JS不支持负向零宽断言(即出现在……之后)的情况。
定义正则表达式有两种方法:/wor/或者new RegExp("wor")。
使用方法
在JS中,使用正则表达式的方法有:
字符串的search方法:"hello".search(/e/)返回1。(以0开始的索引,如果未匹配到,返回-1)
字符串的match方法:"hello".match(/e/)返回["e"]。(表示匹配到的字符串,若未匹配,返回空数组)
正则表达式对象的test方法:(/e/).test("hello")返回true。(表示匹配了)
正则表达式对象的exec方法:(/e/).exec("hello")返回["e"]。(表示匹配到的字符串,若未匹配,返回空数组)
字符
字符本身表示该字符,比如/w/匹配字符w,如"world".search(/w/)返回0。\b表示单词的起始和结束位置。比如/\bme\b/可以匹配"me too!",但不能匹配"media player"。
\d表示任意数字(digital)。
\w表示任意字母,数字或下划线(word)。
\s表示任意单个空格或制表符(space)。两个空格必须由两个\s匹配,比如"hi you".match(/\b\s\s\b/)返回[" "](注意有两个空格),而"hi you".match(/\b\s\b/)返回null。
.(点符号)匹配除了换行符的任意字符。
^表示整个字符串的开头。
$表示整个字符串的结尾。
\B,\D,\W,\S,表示\b,\d,\w,\s的逆:非单词起始或结束位置,非数字,等等。
\\,\.,\^,\$等表示转义,如\^表示实际的字符"^"而不是字符串开头。
[]中添加字符表示匹配其中的任一个字符,比如[abc]或[a-c]可以匹配字母a,b或者c,例如"banana".match(/[a-c]/g)返回["b","a","a","a"]。
[]中的^表示反义,比如/[^abc]/表示任意不是a,b或者c的字符,例如"abgbac".match(/[^abc]/)返回["g"],"fref<afr><frf>.match(/<a[^>]+>/)返回["<afr>"],其含义为“尖括号内以a开头的字符串(包括尖括号)”。
重复
某一个匹配重复了若干次,有以下三种表达:{n},表示元素重复了n此。如"hi3456good".match(/\d{3}/)会返回["345"],匹配了索引从2开始的3个数字。
{n,m},表示元素重复了n到m次。如"hi3456good".match(/\d{2,10}/)返回["3456"],因为任意数字出现了2到10次(这里是4次)。
{n,},表示元素至少重复了n次。如"hi3456good".match(/\d{2,}/)返回["3456"]。
*,表示重复任意次(包括零次),等同于{0,},如"higood".match(/hi\d*good/)返回["higood"]。
+,表示重复一次或更多,等同于{1,},如"higood".match(/hi\d+good/)返回null。
?,表示重复零次或一次,等同于{0,1}。
分支
用|创建分支条件:比如"hello Joey".match(/hi|hello/)返回["hello"],"hi Joey".match(/hi|hello/)返回"hi"。
比如,匹配一个0~255之间的数(在匹配IP地址时常用到):/2[0-4]\d|25[0-5]|[01]?\d\d?/。
分组
用()分组,提高运算优先级:比如,/^(\d{3}[a-z])*$/.test("123x456y789z")返回true。
使用分组时,会给组别分配组名,并使用\<组名>的形式匹配相同的文本:
比如,/(\b\w+\b)/可以匹配任意一个单词,那么/(\b\w+\b)\s+\1/就可以匹配中间带有空格的两个一样的单词,如"go go"。
JS不支持
断言
断言用来匹配“出现在……之前”或者“出现在……之后”的字符。其格式为(?=exp)或类似的格式。比如:"going and watching".match(/\b\w+(?=ing\b)/g);其返回["go", "watch"]。
JS不支持负向零宽断言(即出现在……之后)的情况。
相关文章推荐
- javascript 备忘录
- Javascript 与正则表达式
- javascript基础语法备忘录-变量和数据类型
- 常用的JavaScript验证正则表达式
- 【JavaScript基础知识】——正则表达式
- javascript正则表达式
- JavaScript 正则表达式
- 【Web前端学习笔记】Javascript_04_BOM,DOM思想,正则表达式
- 我所认识的JavaScript正则表达式
- javascript 正则表达式
- 正则表达式在javascript中的几个实例1(转)
- JavaScript 学习笔记(十四) 正则表达式
- [转]温故知新 javascript 正则表达式
- 【知识整理】javascript基础语法总结(6)——正则表达式
- JavaScript正则表达式
- Javascript 经典实用代码·备忘录
- JavaScript_正则表达式小试牛刀-字符串的替换
- JS通用表单验证函数,基于javascript正则表达式
- JavaScript备忘录(2)——闭包
- 正则表达式 替换字符串 [javascript]