【学习笔记】正则表表达式
正则表达式是一种定义字符模式的方法,我们可以拆分,查找或替换字符串中与模式字符匹配的字符。 在javascript之外,正则表达式也是很有用的。 在javascript中,正则表达式是通过RegExp对象使用的,RegExp对象是javascript中的一个内置对象,与String类似。 创建RegExp对象:可以通过两种方式创建新的RegExp对象。 使用正则表达式字面值:如
var myregexp=/b'|'b/ig;
使用RegExp对象的构造函数RegExp():var myregexp=new RegExp("b'|'b","ig"); 使用这种方法的一个非常重要的区别是如果使用特殊的正则表达式字符,如b,这些字符前有一个反斜杠/,在javascript中,反斜杠表示一个转义字符,如果b表示退格,为了区分b是字符串中的转义字符,还是正则表达式中的特殊字符,必须在字符前再加一个反斜杠。因此b就变成b。 上述两种指定正则表达式的方法都可行。一般建议用第一种,而使用第二种的原因是它允许在运行其间确定正则表达式。例如,正则表达式需要以用户的输入为基础时,就用第二种方式。 RegExp对象有自己的方法和属性。如test()方法可测试传入的参数字符串是否匹配RegExp对象中定义的模式。 RegExp对象默认仅查找与模式匹配的第一个字符串,这是RegExp对象的一个重要而常见的特性。正则表达式从字符的一端开始查找,当找到第一个匹配字符串时,就停止查找。 RegExp对象的方法:test()方法:检测所传入的参数字符串,确定传入的参数是否与定义的RegExp对象正则语法匹配,如果匹配,则返回true,否则返回false。
RegExp对象属性:
如:
var myregexp=/b'|'b/gi; 则执行全局查找并忽略大小写。 正则表达式特殊字符:1,文本,数字和标点符号:
d:0~9的任何数字。如:dd将匹配72,但不匹配aa,7a,只匹配两个都为数字的字符。
D:任何非数字字符。如DDD匹配abc,但不匹配123或8ef,值匹配三个都不为数字的字符。
w: 任何单词字符,即A ~ Z,a~z,0~9以及下划线(_)字符。如wwww匹配Ab_2,但不匹配&%*或Ab_@。
W: 任何非单词字符,如W匹配@,但不匹配a。
s: 任何空白字符。如s匹配制表符,回车符,换页符和竖杆。
S: 任何非空白字符。S匹配A,但不匹配制表符。
.:除换行符(n)之外的任意单个字符。.匹配a或4,或@。
[...]:匹配位于方括号之内的任何一个字符,[a-z]将匹配在a~z范围内的任何字符。如[abc]匹配a,b,c但不匹配任何其他字符。
[^...]:匹配方括号之外的任何字符。如[abc]将匹配a,c之外的任何字符。[^a-z]将匹配除了a~z之外的任何字符。
<form action="#" name="form1"> <input type="text" name="txt"> <input type="button" value="测试" name="btn" onclick="check()" > </form> <script> function reg(txt){ var myreg=/[^a-zd ]/i; return !(myreg.test(txt)); } function check(){ if(reg(document.form1.txt.value)==true){ alert("有效"); }else{ alert("无效") } } </script> 函数接收一个参数,即要检查有效性的文本,设置一个正则表达式并赋值给变量myreg,这就将隐式地创建一个新的RegExp对象。该正则表达式: a-z匹配从a到z的任意字符。 d表示匹配任何数字字符,即0到9。 空格 [^]表示要匹配括号外的任意字符。 i表示该模式不区分大小写。 综上,该表达式不匹配空格,a~z,A~Z和0~9之间的字符。
如:
1-800-889-5475
d-ddd-ddd-dddd
2,重复字符。
用于指定要匹配多少个前一项或字符。
{n}:前一项出现n次。如x{2}与xx匹配,x出现两次。
{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,xxxxx等。
*:前一项出现0次或多次。如x*匹配空字符串,或x,xxx等。
如:
1-800-889-5475
d-ddd-ddd-dddd
d-d{3}-d{3}-d{4}
|