在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中正则表达式的使用方法,包括基本语法、特殊字符的意义及使用、正则表达式的分组和重用,以及如何利用正则表达式进行电话号码、邮政编码和电子邮件地址的有效性验证。
1073

被折叠的 条评论
为什么被折叠?



