学习笔记——JavaScript中的正则表达式
来源:互联网 发布:未知usb设备 端口重置 编辑:程序博客网 时间:2024/05/16 16:01
在JavaScript中,正则表达式是通过RegExp对象使用的。RegExp对象是JavaScript中的一个内置对象。
可以通过两种方式创建新的RegExp对象:
在用构造函数创建RegExp时,注意,在字符串中,反斜杠表示一个转义字符。例如\b代表退格。因此,
在字符串中为了区分,需要加两个斜杠,如上所示
另外,RegExp的三个属性值在采用构造函数时的指定方法如下:
简单的正则表达式:
RegExp的三个属性:
g:全局匹配,查找所有与模式匹配的子串,而不是在找到第一个匹配的子串后就结束
i:模式不区分大小写。
m:多行标记,只能用于IE 5.5+和NN 6+,该标记指定,特殊字符^和$可以匹配多行文本和字符串
的开始和结束
实例:
特殊字符——文本、数字和标点符号:
\d 0~9 的任何数字 \d\d匹配72,但不匹配7a或aa
\D 任何非数字字符 \D\D匹配ab,但是不匹配13或8f
\w 任何单词字符【A~Z、a~z、0~9、下划线(_)】 \w\w\w匹配A_2,不匹配A@a或者&%$
\W 任何非单词字符 \W匹配@,但是不匹配a
\s 任何空白字符 \s与制表符、回车符、换页符、竖杠匹配
\S 任何非空白字符 \S匹配A,但是不匹配制表符
. 除换行符(\n)之外任意单个字符 .匹配a或者4,或者@
[…] 匹配位于方括号之内的任一个字符 [a-z]匹配a~z所有字符
[^…] 匹配除方括号内的字符之外的任何字符 [^a-z]匹配除了a~z之外任何字符
特殊字符——重复字符
{n} 前一项出现n次 x{2}与xx匹配
{n,} 前一项出现n次,或者n次以上 x{2,}匹配xx、xxx、xxxx、xxxxx等等
{n,m} 前一项至少出现n次,至多出现m次 x{2,4}匹配xx、xxx、xxxx
? 前一项出现0次或1次 x?匹配空串或者x
+ 前一项出现1次或多次 x+匹配x、xx、xxx、xxxx、xxxxx等
* 前一项出现0次或多次 x*匹配空串、x、xx、xxx、xxxx等等
特殊字符——位置字符
^ 模式必须位于字符串的开头,如果是多行字符串,模式就位于一行的开头。对于多行文本
(即包含回车符的字符串),在定义正则表达式时,要使用m
$ 模式必须位于字符串的借书位置,如果是多行字符串,模式就位于一行的结束位置。对于
多行文本(即包含回车符的字符串),在定义正则表达式时,要使用m
\b 匹配单词分界位置,即单词字符与非单词字符之间的位置
\B 匹配非单词分界位置
实例:
如果要确保模式位于一行的开头,可用:^myPattern,这将与一行开头的myPattern匹配
如果要在一行的结尾匹配该模式,可用:myPattern$
对于\b与\B,它们容易混淆,因为它们不匹配字符,而是匹配字符之间的位置
正则表达式的分组
如果要把多个表达式处理为一个组,只需将它们放在圆括号中,如/(\d\d)/
正则表达式中的圆括号是把字符模式组合在一起的特殊字符,圆括号本身不是要匹配的字符
实例:
/Javascript+/; //这个表示t出现1次或者多次
/(Javascript)+/; //这个表示Javascript字符串出现1次或者多次
在分组中还可以配合使用分组和特殊字符竖杠(|)。|是二选一字符,与C语言中的||作用一样
实例:
重用字符组
可以在正则表达式中重用通过一组字符指定的模式。要引用前面的字符组,只需输入\和表示
分组顺序的数字即可。例如,第一个字符分组可引用为\1,第3个可以为\3
实例:
/(\d)(\w),\1\2/;//这个匹配形如:1a,4d类型的字符串
使用正则表达式验证电话号码、邮政编码、电子邮件的方法:
实例:简单的正则表达式测试器
可以通过两种方式创建新的RegExp对象:
var myRegExp= /\b'|'\b/;//斜杠(/)表示正则表达式的开始和结束var myRegExp=new RegExp("\\b'|'\\b");
在用构造函数创建RegExp时,注意,在字符串中,反斜杠表示一个转义字符。例如\b代表退格。因此,
在字符串中为了区分,需要加两个斜杠,如上所示
另外,RegExp的三个属性值在采用构造函数时的指定方法如下:
var myRegExp=new RegExp("hello\\b","gi");
简单的正则表达式:
var myString="Paul,Paula,Pauline,paul,Paul";var myRegExp=/Paul/;myString=myString.replace(myRegExp,"Ringo");//此时myString为:Ringo,Paula,Pauline,paul,Paul
RegExp的三个属性:
g:全局匹配,查找所有与模式匹配的子串,而不是在找到第一个匹配的子串后就结束
i:模式不区分大小写。
m:多行标记,只能用于IE 5.5+和NN 6+,该标记指定,特殊字符^和$可以匹配多行文本和字符串
的开始和结束
实例:
var myString="Paul,Paula,Pauline,paul,Paul"; var myRegExp=/Paul/g; myString=myString.replace(myRegExp,"Ringo"); //此时myString的值为:Ringo,Ringo,Ringoine,paul,Ringo var myRegExp=/Paul/gi; myString=myString.replace(myRegExp,"Ringo"); //此时myString的值为:Ringo,Ringo,Ringoine,Ringo,Ringo
特殊字符——文本、数字和标点符号:
\d 0~9 的任何数字 \d\d匹配72,但不匹配7a或aa
\D 任何非数字字符 \D\D匹配ab,但是不匹配13或8f
\w 任何单词字符【A~Z、a~z、0~9、下划线(_)】 \w\w\w匹配A_2,不匹配A@a或者&%$
\W 任何非单词字符 \W匹配@,但是不匹配a
\s 任何空白字符 \s与制表符、回车符、换页符、竖杠匹配
\S 任何非空白字符 \S匹配A,但是不匹配制表符
. 除换行符(\n)之外任意单个字符 .匹配a或者4,或者@
[…] 匹配位于方括号之内的任一个字符 [a-z]匹配a~z所有字符
[^…] 匹配除方括号内的字符之外的任何字符 [^a-z]匹配除了a~z之外任何字符
特殊字符——重复字符
{n} 前一项出现n次 x{2}与xx匹配
{n,} 前一项出现n次,或者n次以上 x{2,}匹配xx、xxx、xxxx、xxxxx等等
{n,m} 前一项至少出现n次,至多出现m次 x{2,4}匹配xx、xxx、xxxx
? 前一项出现0次或1次 x?匹配空串或者x
+ 前一项出现1次或多次 x+匹配x、xx、xxx、xxxx、xxxxx等
* 前一项出现0次或多次 x*匹配空串、x、xx、xxx、xxxx等等
特殊字符——位置字符
^ 模式必须位于字符串的开头,如果是多行字符串,模式就位于一行的开头。对于多行文本
(即包含回车符的字符串),在定义正则表达式时,要使用m
$ 模式必须位于字符串的借书位置,如果是多行字符串,模式就位于一行的结束位置。对于
多行文本(即包含回车符的字符串),在定义正则表达式时,要使用m
\b 匹配单词分界位置,即单词字符与非单词字符之间的位置
\B 匹配非单词分界位置
实例:
如果要确保模式位于一行的开头,可用:^myPattern,这将与一行开头的myPattern匹配
如果要在一行的结尾匹配该模式,可用:myPattern$
对于\b与\B,它们容易混淆,因为它们不匹配字符,而是匹配字符之间的位置
var myString="Hello world!,let's go"; var myRegExp=/\b/g; myString=myString.replace(myRegExp,"|"); //此后,myString值为:|Hello| |world|!,|let|'|s| |go| var myRegExp=/\B/g; myString=myString.replace(myRegExp,"|"); //此后,myString值为:H|e|l|l|o w|o|r|l|d!,l|e|t's g|o
正则表达式的分组
如果要把多个表达式处理为一个组,只需将它们放在圆括号中,如/(\d\d)/
正则表达式中的圆括号是把字符模式组合在一起的特殊字符,圆括号本身不是要匹配的字符
实例:
/Javascript+/; //这个表示t出现1次或者多次
/(Javascript)+/; //这个表示Javascript字符串出现1次或者多次
在分组中还可以配合使用分组和特殊字符竖杠(|)。|是二选一字符,与C语言中的||作用一样
实例:
/(VB)?(Java)Script\b/gi;//这个不仅匹配VBScript和JavaScript,还匹配VBJavaScript/(VB|Java)Script\b/gi;//这个只是匹配VBScript和JavaScript
重用字符组
可以在正则表达式中重用通过一组字符指定的模式。要引用前面的字符组,只需输入\和表示
分组顺序的数字即可。例如,第一个字符分组可引用为\1,第3个可以为\3
实例:
/(\d)(\w),\1\2/;//这个匹配形如:1a,4d类型的字符串
使用正则表达式验证电话号码、邮政编码、电子邮件的方法:
function isValidTeliphone(telephoneNumber) { var telRegExp=/^(\+\d{1,3} ?)?(\(\d{1,5}\)|\d{1,5}) ?\d{3}?\d{0,7}( (x|xtn|ext|extn|pax|pbx|extension)?\.? ?\d{2-5})?$/i; return telRegExp.test(telephoneNumber); } function isValidPostalCode(postalCode) { var pcodeRegExp=/^(\d{5}(-\d{4})?|([a-z][a-z]?\d\d?|[a-z{2}\d[a-z])?\d[a-z][a-z])$/i; return pcodeRegExp.test(postalCode); } function isValidEmail(emailAddress) { var emailRegExp=/^(([^<>()\[\]\\.,;:@"\x00-\x20\x7F]|\\.)+|("" "([^\x0A\x0D"\\]|\\\\)+" ""))@(([a-z]|#\d+?)([a-z0-9-]|#\d+?)*([a-z0-9]|#\d+?)\.)+([a-z]{2,4})$/i; return emailRegExp.test(emailAddress); }
实例:简单的正则表达式测试器
- 学习笔记——JavaScript中的正则表达式
- Javascript学习笔记——正则表达式
- JavaScript中的正则表达式学习笔记
- 【前端学习笔记】Javascript中的正则表达式
- javascript中的正则表达式学习
- JavaScript学习笔记之——正则表达式总结
- javascript正则表达式学习笔记
- javascript正则表达式学习笔记
- JavaScript 正则表达式学习笔记
- Javascript学习笔记-----正则表达式
- javaScript学习笔记正则表达式
- javascript正则表达式 学习笔记
- JavaScript正则表达式学习笔记
- 【前端学习笔记】Javascript中的正则表达式-实例
- 正则表达式入门经典(学习笔记五)——正则表达式中的圆括号
- JavaScript—正则表达式中的特殊字符
- 正则表达式学习笔记之一——正则表达式引擎
- JavaEE学习--javascript中的正则表达式
- 学习笔记——简单的正则表达式测试器
- Tomcat热部署方法(3种)
- Android 自己动手写ListView学习其原理 3 ItemClick,ItemLongClick,View复用
- ThinkPHP中的Session用法
- OpenGL环境搭建(Windows下VS2010)和版本信息查询
- 学习笔记——JavaScript中的正则表达式
- 经典开源C/C++项目
- java中的IO基础
- java中的IO基础2
- java中的IO基础3
- 总结一下各种IO方式
- Ubuntu12.04安装kvm简介
- 数据库分区分表
- Linux多线程编程(不限Linux)