常用正则表达式

      只能输入数字:"^[0-9]*$"。

  只能输入n位的数字:"^\d{n}$"。

  只能输入至少n位的数字:"^\d{n,}$"。

  只能输入m~n位的数字:。"^\d{m,n}$"

  只能输入零和非零开头的数字:"^(0|[1-9][0-9]*)$"。

  只能输入有两位小数的正实数:"^[0-9]+(.[0-9]{2})?$"。

  只能输入有1~3位小数的正实数:"^[0-9]+(.[0-9]{1,3})?$"。
      
         ^(-)?\d+((\.)?\d{2})?$   //小数点限制长度

  只能输入非零的正整数:"^\+?[1-9][0-9]*$"。

  只能输入非零的负整数:"^\-[1-9][]0-9"*$。

  只能输入长度为3的字符:"^.{3}$"。

  只能输入由26个英文字母组成的字符串:"^[A-Za-z]+$"。

  只能输入由26个大写英文字母组成的字符串:"^[A-Z]+$"。

  只能输入由26个小写英文字母组成的字符串:"^[a-z]+$"。

  只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。

  只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。

  验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能包含字符、数字和下划线。

  验证是否含有^%&’,;=?$\"等字符:"[^%&’,;=?$\x22]+"。

  只能输入汉字:"^[\u4e00-\u9fa5]{0,}$"

  验证Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。

  验证InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。

  验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"
         正确格式为:"XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。

  验证身份证号(15位或18位数字):"^\d{15}|\d{18}$"。


  验证一年的12个月:"^(0?[1-9]|1[0-2])$"正确格式为:"01"~"09"和"1"~"12"。

  验证一个月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为;"01"~"09"和"1"~"31"。

  

手机
^((\+86)|(86))?(13)\d{9}$    ^((13)|(15))[0-9]{9}$  \+转义代表使用加号本身 ?匹配表达式0次或者1次  所以 13522170***是匹配成功的 +8613522170***或8613522170***

^\d*$   ^[0-9]*$只能为数字
^(-)?\d+((\.)?\d{2})?$   //小数点限制长度

(^(\d{3,4}-)?\d{7,8})$|(13[0-9]{9})  //电话号码与手机号码同时验证

 

^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+  邮件地址验证 +表达式至少出现1次
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

^\d{6}$  邮编

^[\u4e00-\u9fa5]{0,}$     ^[\u0391-\uFFE5]+$  只能输入汉字

 
表达式 "[bcd][bcd]" 匹配 "abc123" 时,匹配的结果是:成功;匹配到的内容是:"bc";匹配到的位置是:开始于1,结束于3
这是[bcd][bcd]" 为一整体
表达式 "[bcd]" 匹配 "abc123" 时,匹配的结果是:成功;匹配到的内容是:"b";匹配到的位置是:开始于1,结束于2。


^ $的理解

达式

作用

^

与字符串开始的地方匹配,不匹配任何字符

$

与字符串结束的地方匹配,不匹配任何字符

\b

匹配一个单词边界,也就是单词和空格之间的位置,不匹配任何字符


^ 使用
"\d+\.?\d* "他能匹配 It costs $12.5   匹配的结果是:成功;匹配到的内容是:"12.5";匹配到的位置是:开始于10,结束于14。
但在表达式头加^末加$ 如:"^\d+\.?\d*$"  他匹配时不成功 ^在字符开始,结束的地方匹配时不成功的。
但:"^\d+\.?\d*"可以匹配12.3cd<br>dfdsf<brooo<br>

表达式 "\bend\b" 在匹配 "weekend,endfor,end" 时,匹配结果是:成功;匹配到的内容是:"end";匹配到的位置是:开始于15,结束于18。
"\bend "或者"end\b" 在匹配 "weekend,endfor,end" 时,匹配结果是:成功;
"end"表达式在匹配"weekend,endfor,end" 时,匹配结果是:成功; 内容是三个"end"


<script language="javascript">
var s=prompt("请输入在查找的字符","人");
var reg=new RegExp("("+s+")","g");
var str="中华人民共和国,中华人民共和国";
var newstr=str.replace(reg,"<font color=red>$1</font>");
document.write(newstr);
</script>
2、RegExp 对象

正则表达式对象保存用于查找字符串中的字符组合时的模式。创建正则表达式对象后,或者它被传递给字符串方法,或者字符串被传递给一个正则表达式方法。有关最近进行查找的信息被保存在 RegExp 对象中。

创建正则表达式对象有两种方法。如果预先知道要查找的字符串时,用语法1:

var regularexpression = /pattern/[switch]

当查找字符串经常变动或不知道时用语法2:

    var regularexpression = new RegExp("pattern",["switch"])

pattern是要查找的字符串,在语法1中用斜杠括起来,而在语法2中有引号。switch是开关,有三种选择,"i" 表示忽略大小写"g" 表示全文查找出现的所有pattern,"gi" 表示两者都要,即全文查找并忽略大小写

执行查找

创建了正则表达式对象后,要执行查找用exec方法,语法:

    rgexp.exec(str)

rgexp是正则表达式对象,可以是变量名或文字。str是被查找的字符串。例如,

var s = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPp";
var r = new RegExp("g", "i"); 
var a = r.exec(s);
document.write(a);   //显示G

因为忽略大小写,执行搜索后第一个匹配的是G,所以变量a="G"。

exec方法查找的结果被放在一个数组中。如果 exec 方法没有找到匹配,则它返回 null。如果它找到一个或多个匹配,则exec 方法返回一个数组,并且更新 RegExp 对象,来反映查找结果。在RegExp 对象的属性 $1, ...$9 中保存最近的九个结果。无论何时产生一个成功的带插入语的匹配,$1...$9 属性的值都被修改,但是只有最近的九个可以被保存起来。

测试正则表达式模式

可以用test方法来测试正则表达式在被查字符串的中是否存在。语法

    rgexp.test(str)

语法与exec方法一样。它返回一个Boolean值,如果存在就返回true,否则返回false。test 方法不修改RegExp对象中的信息。

RegExp对象和它的属性

RegExp对象用于保存对正则表达式模式查找的信息,这些信息保持在它的属性中。RegExp对象没有方法。一般语法是

    RegExp.propertyname

propertyname 参数是RegExp对象的一个属性。RegExp对象有下列属性:

$1-$9 属性       返回九个在模式匹配期间找到的、最近保存的部分。只读。
RegExp.index  返回第一个成功匹配的字符串的开始位置。
RegExp.lastIndex  返回字符位置,它是被查找字符串中最后一次成功匹配的开始位置。
RegExp.input 
返回执行查找的字符串。只读。

lastIndex 属性是基于零的,也就是说,第一个字符的索引是零。不论何时产生一个成功匹配,它的值都被修改。lastIndex 属性被RegExp 对象的exec 和test 方法,以及String 对象的match、replace、和 split 方法修改。

下面的规则应用于 lastIndex 的值:

  • 如果还没有匹配,则 lastIndex 被设置为 -1.
  • 如果 lastIndex 比字符串的长度大,则 test 和 exec 失败,并且 lastIndex 被设置为 -1。
  • 如果 lastIndex 等于字符串的长度,且模式与空字符串匹配,则正则表达式匹配。否则,匹配失败并且 lastIndex 被重置为 -1。
  • 否则,lastIndex 被设置为紧接最近的匹配的下一个位置。

例程1 下面的代码用来考察上述属性的内容。

function RegexpDemo(reg, str){
var re = new RegExp(reg ,"gi"); 
var a = re.exec(str);
var BR = "<br>";
if (re.test(str))
document.write ("找到的第一个匹配的字符串是" +a + BR);
document.write ("第一个匹配位置是" +RegExp.index+ BR);
document.write ("最后一个匹配位置是" +RegExp.lastIndex+ BR);
document.write ("被查找的文本是:" +BR +RegExp.input+ BR);
document.write ("$1=" + RegExp.$1);
};
var str = "The built-in objects are special because they are built into ASP pages and do not need to be created before you can use them in scripts.";
var reg = "(OBJECT)";
document.write ("查找" + reg + "<br>");
RegexpDemo(reg, str+str);

运行例程

说明 查找的字符串OBJECT加括号,$1有值。如果不加括号,$1是空串。什么道理? 我也不知道。


正则表达式对象的属性

正则表达式对象有两个属性属性。lastIndex属性指定索引,下一个匹配从该索引处开始。语法:

    rgexp.lastIndex [= index]

请参照RegExp对象的lastIndex属性。

source属性返回正则表达式模式的文本的复本,只读。语法:

    rgexp.source

下面的例子说明了source 属性的用法:

function SourceDemo(re, s)
{
var s1;
// 测试字符串中是否存在正则表达式。
if (re.test(s))
s1 = " contains ";
else
s1 = " does not contain ";
// 获得正则表达式自己的文本。
return(s + s1 + re.source);

RegExp.input  是返回被查找的字符串,而source是返回要查找的字符串。

正则表达式对象的compile方法

正则表达式模式pattern 参数在使用前被编译为内部格式。对语法1 来说,pattern 在该脚本装载时被编译。对语法2 来说,pattern 在使用前,或调用compile方法时被编译。compile方法把pattern转换为内部格式,从而执行得更快。这使得在循环中可更有效地使用正则表达式。语法如下:

    rgexp.compile(pattern)

下面的例子说明了compile 方法的用法:

function CompileDemo()
{
var s = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPp"
// 只为大写字母创建正则表达式。
var r = new RegExp("[A-Z]", "g");
var a = s.match(r)	// 查找匹配。
  document.write(a);
r.compile("[a-z]", "g");// 只为小写字母编译正则表达式。
var a = s.match(r)	// 查找匹配。
document.write(a);
}

代码注释

match是String对象的一个方法,其功能是使用正则表达式对象对字符串进行查找,并将结果作为数组返回。语法:

stringObj.match(rgExp)

match 方法与RegExp.exec 方法有些相似,将返回一个数组。该数组的元素0 包含最后匹配的字符,元素 1...n 包含与正则表达式中任何用插入符分开的子字符串匹配的内容。该方法将更新RegExp 对象的内容。

下面的示例演示了match方法的用法:

function MatchDemo()
{
var r, re;
var s = "The quick brown fox jumped over the lazy yellow dog.";
re = /fox/i;
r = s.match(re);
return(r);
}




posted @ 2008-08-30 22:00  hemingchen  阅读(2817)  评论(0编辑  收藏  举报