ASP正则表达式
<Execute  方法>
描述:对指定的字符串执行正则表达式搜索。 
语法:object.Execute(string)
Execute  方法的语法包括以下几个部分: 
object:必需的。总是一个  RegExp  对象的名称。 
string:必需的。要在其上执行正则表达式的文本字符串。 
 
说明:正则表达式搜索的设计模式是通过  RegExp  对象的  Pattern  来设置的。Execute  方法返回一个Matches  集合,其中包含了在  string  中找到的每一个匹配的  Match  对象。如果未找到匹配,Execute  将返回空的  Matches  集合。 
 
<Test方法>
描述:对指定的字符串执行一个正则表达式搜索,并返回一个  Boolean  值指示是否找到匹配的模式。 
语法:object.Test(string) 
Test  方法的语法包括以下几个部分: 
object:必需的。总是一个  RegExp  对象的名称。 
string:必需的。要执行正则表达式搜索的文本字符串。 
 
说明:正则表达式搜索的实际模式是通过RegExp对象的Pattern属性来设置的。RegExp.Global属性对Test方法没有影响。如果找到了匹配的模式,Test方法返回True;否则返回False。 
 
<Global属性>
描述:设置或返回一个  Boolean  值,该值指明在整个搜索字符串时模式是全部匹配还是只匹配第一个。 
语法:object.Global  [=  True  |  False  ] 
object  参数总是  RegExp  对象。如果搜索应用于整个字符串,Global  属性的值为  True,否则其值为  False。默认的设置为  True。 
 
<IgnoreCase属性>
描述:设置或返回一个Boolean值,指明模式搜索是否区分大小写。 
语法:object.IgnoreCase  [=  True  |  False  ] 
object  参数总是一个  RegExp  对象。如果搜索是区分大小写的,则  IgnoreCase  属性为  False;否则为  True。缺省值为  True。 
 
<Pattern属性>
描述:设置或返回被搜索的正则表达式模式。  这是一个最重要的属性,我们主要是设置这个属性来实现数据校验的。 
语法:object.Pattern  [=  "searchstring"] 
Pattern  属性的语法包含以下几个部分: 
object:必需的。总是一个  RegExp  对象变量。 
searchstring:可选的。被搜索的正则字符串表达式。它可能包含设置部分表格中的各种正则表达式字符。

设置:在书写正则表达式的模式时使用了特殊的字符和序列。下表描述了可以使用的字符和序列,并给出了实例。 
 
字符描述:  \:将下一个字符标记为特殊字符或字面值。例如"n"与字符"n"匹
配。"\n"与换行符匹配。序列"\\"与"\"匹配,"\("与"("匹配。 
^  :匹配输入的开始位置。 
$  :匹配输入的结尾。 
*  :匹配前一个字符零次或几次。例如,"zo*"可以匹配"z"、"zoo"。 
+  :匹配前一个字符一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。 
?  :匹配前一个字符零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。 
.:匹配换行符以外的任何字符。 
(pattern)  与模式匹配并记住匹配。匹配的子字符串可以从作为结果的  Matches  集合中使用  Item  [0]...[n]取得。如果要匹配括号字符(和  ),可使用"\(" 
或  "\)"。 
x|y:匹配  x  或  y。例如  "z|food"  可匹配  "z"  或  "food"。"(z|f)ood"  匹
配  "zoo"  或  "food"。 
{n}:n  为非负的整数。匹配恰好n次。例如,"o{2}"  不能与  "Bob  中的  "o"  匹
配,但是可以?quot;foooood"中的前两个o匹配。 
{n,}  :n  为非负的整数。匹配至少n次。例如,"o{2,}"不匹配"Bob"中的"o",但是匹配"foooood"中所有的o。"o{1,}"等价于"o+"。"o{0,}"等价于"o*"。 
{n,m}  :m  和  n  为非负的整数。匹配至少  n  次,至多  m  次。例如,"o{1,3}"  匹配  "fooooood"中前三个o。"o{0,1}"等价于"o?"。 
[xyz]  :一个字符集。与括号中字符的其中之一匹配。例如,"[abc]"  匹
配"plain"中的"a"。 
[^xyz]  :一个否定的字符集。匹配不在此括号中的任何字符。例如,"[^abc]"  可以匹配"plain"中的"p". 
[a-z]  :表示某个范围内的字符。与指定区间内的任何字符匹配。例如,"[a-z]"匹配"a"与"z"之间的任何一个小写字母字符。 
[^m-z]  :否定的字符区间。与不在指定区间内的字符匹配。例如,"[m-z]"与不
在"m"到"z"之间的任何字符匹配。 
\b  :与单词的边界匹配,即单词与空格之间的位置。例如,"er\b"  与"never"中的"er"匹配,但是不匹配"verb"中的"er"。 
\B  :与非单词边界匹配。"ea*r\B"与"never  early"中的"ear"匹配。 
\d  :与一个数字字符匹配。等价于[0-9]。 
\D  :与非数字的字符匹配。等价于[^0-9]。 
\f  :与分页符匹配。 
\n  :与换行符字符匹配。 
\r  :与回车字符匹配。 
\s  :与任何白字符匹配,包括空格、制表符、分页符等。等价于"[ 
\f\n\r\t\v]"。 
\S  :与任何非空白的字符匹配。等价于"[^  \f\n\r\t\v]"。 
\t  :与制表符匹配。 
\v  :与垂直制表符匹配。 
\w  :与任何单词字符匹配,包括下划线。等价于"[A-Za-z0-9_]"。 
\W  :与任何非单词字符匹配。等价于"[^A-Za-z0-9_]"。 
\num  :匹配  num个,其中  num  为一个正整数。引用回到记住的匹配。例如,"(.)\1"匹配两个连续的相同的字符。 
\n:匹配  n,其中n  是一个八进制换码值。八进制换码值必须是  1,  2  或  3  个数字长。 
例如,"\11"  和  "\011"  都与一个制表符匹配。"\0011"等价于"\001"  与  "1"。八进制换码值不得超过  256。否则,只有前两个字符被视为表达式的一部分。允许在正则表达式中使用ASCII码。 
\xn:匹配n,其中n是一个十六进制的换码值。十六进制换码值必须恰好为两个数字长。例如,"\x41"匹配"A"。"\x041"等价于"\x04"  和  "1"。允许在正则表达式中使用  ASCII  码。 
 
好了,常用的方法和属性就是这些了,上面的语法介绍的已经很详细了,我们就没有必要在罗嗦了,接下来我们来看看在具体的例子里面如何使用这些方法和属性来校验数据的合法性,我们还是举个例子吧,比如,我们想要对用户输入的电子邮件进行校验,那么,什么样的数据才算是一个合法的电子邮件呢?我可以这样输入: 
uestc95@263.net,当然我也会这样输入:xxx@yyy.com.cn,但是这样的输入就是非法的:xxx@@com.cn或者@xxx.com.cn,等等,所以我们得出一个合法的电子邮件地址至少应当满足以下几个条件: 
 
1.  必须包含一个并且只有一个符号“@” 
2.  必须包含至少一个至多三个符号“.” 
3.  第一个字符不得是“@”或者“.” 
4.  不允许出现“@.”或者.@ 
5.  结尾不得是字符“@”或者“.” 
 
所以根据以上的原则和上面表中的语法,我们很容易的就可以得到需要的模板如
下:"(\w)+[@]{1}(\w)+[.]{1,3}(\w)+" 
 
接下来我们仔细分析一下这个模板,首先“\w”表示邮件的开始字符只能是包含下划线的单词字符,这样,满足了第三个条件;“[@]{1}”表示在电子邮件中应当匹配并且只能匹配一次字符“@”,满足了条件一;同样的“[.]{1,3}”表示在电子邮件中至少匹配1个至多匹配3个字符“.”  ,满足了第二个条件;模板最后的“(\w)+”
表示结尾的字符只能是包含下划线在内的单词字符,满足了条件五;模板中间的
“(\w)+”满足了条件四。 
 
然后,我们就直接调用刚才的那个函数CheckExp("(\w)+[@]{1}(\w)+[.]{1}
(\w)+",待校验的字符串)就好了,如果返回True就表示数据是合法的,否则就是不正确的,怎么样,简单吧。我们还可以写出来校验身份证号码的模板:"([0-9])
{15}";校验URL的模板:"^http://{1}((\w)+[.]){1,3}"等等;我们可以看到,这些模板为我们提供了很好的可重利用的模块,利用自己或者别人提供的各种模板,我们就可以方便快捷的进行数据的合法性校验了,相信你一定会写出非常通用的模板的。 
 
这样,我们只要定制不同的模板,就可以实现对不同数据的合法性校验了。所以,正则表达式对象中最重要的属性就是:“Pattern”属性,只要真正掌握了这个属性,才可以自由的运用正则表达式对象来为我们的数据校验进行服务。
 
JavaS cript  replace

replace方法的语法是:stringObj.replace(rgExp,  replaceText)  其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。。为了帮助大家更好的理解,下面举个简单例子说明一下

<script  language="javas cript">
var  stringObj="终古人民共和国,终古人民";

//替换错别字“终古”为“中国”
//并返回替换后的新字符
//原字符串stringObj的值没有改变
var  newstr=stringObj.replace("终古","中国"); 
alert(newstr);
</script>

比我聪明的你,看完上面的例子之后,会发现第二个错别字“终古”并没有被替换成“中国”,我们可以执行二次replace方法把第二个错别字“终古”也替换掉,程序经过改进之后如下:

<script  language="javas cript">
var  stringObj="终古人民共和国,终古人民";

//替换错别字“终古”为“中国”
//并返回替换后的新字符
//原字符串stringObj的值没有改变
var  newstr=stringObj.replace("终古","中国");

newstr=newstr.replace("终古","中国"); 
alert(newstr);
</script>

我们可以仔细的想一下,如果有N的N次方个错别字,是不是也要执行N的N次方replace方法来替换掉错别字呢??呵,不用怕,有了正则表达式之后不用一个错别字要执行一次replace方法。。程序经过改进之后的代码如下

<script  language="javas cript">
var  reg=new  RegExp("终古","g");  //创建正则RegExp对象
var  stringObj="终古人民共和国,终古人民";
var  newstr=stringObj.replace(reg,"中国"); 
alert(newstr);
</script>

上面讲的是replace方法最简单的应用,不知道大家有没有看懂??下面开始讲稍微复杂一点的应用。。

大家在一些网站上搜索文章的时候,会发现这么一个现象,就是搜索的关键字会高亮改变颜色显示出来??这是怎么实现的呢??其实我们可以用正则表达式来实现,具体怎么样实现呢?简单的原理请看下面的代码

<script  language="javas cript">
var  str="中华人民共和国,中华人民共和国";
var  newstr=str.replace(/(人)/g,"<font  color=red>$1</font>");
document.write(newstr);
</script>

上面的程序缺少互动性,我们再改进一下程序,实现可以自主输入要查找的字符

<script  language="javas cript">
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>

可能大家都会对$1这个特殊字符表示什么意思不是很理解,其实$1表示的就是左边表达式中括号内的字符,即第一个子匹配,同理可得$2表示第二个子匹配。。什么是子匹配呢??通俗点讲,就是左边每一个括号是第一个字匹配,第二个括号是第二个子匹配。。

当我们要把查找到的字符进行运算的时候,怎么样实现呢??在实现之前,我们先讲一下怎么样获取某一个函数的参数。。在函数Function的内部,有一个arguments集合,这个集合存储了当前函数的所有参数,通过arguments可以获取到函数的所有参数,为了大家理解,请看下面的代码

<script  language="javas cript">
function  test()
{
alert("参数个数:"+arguments.length);
alert("每一个参数的值:"+arguments[0]);
alert("第二个参数的值"+arguments[1]);
//可以用for循环读取所有的参数
}

test("aa","bb","cc"); 
</script>

看懂上面的程序之后,我们再来看下面一个有趣的程序

<script  language="javas cript">
var  reg=new  RegExp("\\d","g");
var  str="abd1afa4sdf";
str.replace(reg,function(){alert(arguments.length);});
</script>

我们惊奇的发现,匿名函数竟然被执行了二次,并且在函数里还带有三个参数,为什么会执行二次呢??这个很容易想到,因为我们写的正则表达式是匹配单个数字的,而被检测的字符串刚好也有二个数字,故匿名函数被执行了二次。。在匿名函数内部的那三个参数到底是什么内容呢??为了弄清这个问题,我们看下面的代码。

<script  language="javas cript">
function  test()
{
for(var  i=0;i<arguments.length;i++)
{
alert("第"+(i+1)+"个参数的值:"+arguments );
}

}
var  reg=new  RegExp("\\d","g");
var  str="abd1afa4sdf";
str.replace(reg,test);
</script>

经过观察我们发现,第一个参数表示匹配到的字符,第二个参数表示匹配时的字符最小索引位置(RegExp.index),第三个参数表示被匹配的字符串(RegExp.input)。其实这些参数的个数,还会随着子匹配的变多而变多的。弄清这些问题之后,我们可以用另外的一种写法

<script  language="javas cript">
function  test($1)
{
return  "<font  color='red'>"+$1+"</font>"
}
var  s=prompt("请输入在查找的字符","人");
var  reg=new  RegExp("("+s+")","g");
var  str="中华人民共和国,中华人民共和国";
var  newstr=str.replace(reg,test);
document.write(newstr);
</script>

看了上面的程序,原来可以对匹配到的字符为所欲为。下面简单举一个应用的例子

<script  language="javas cript">
var  str="他今年22岁,她今年20岁,他的爸爸今年45岁,她的爸爸今年44岁,一共有4人"
function  test($1)
{
var  gyear=(new  Date()).getYear()-parseInt($1)+1;
return  $1+"("+gyear+"年出生)";
}
var  reg=new  RegExp("(\\d+)岁","g");
var  newstr=str.replace(reg,test);
alert(str);
alert(newstr);
</script>

原文来自: http://blog.sina.com.cn/s/blog_5140c6740100h163.html

new RegExp相关推荐

  1. mysql中正则表达式的用法_Mysql中正则表达式Regexp常见用法

    Mysql中Regexp常见用法 模糊匹配,包含特定字符串 # 查找content字段中包含"车友俱乐部"的记录 select * from club_content where ...

  2. php sql中regexp,[NCTF2019]SQLi(regexp注入)

    主页就一个登录框 .把sql语句显示出来了. 再进行一波信息搜集.看看robots.txt 有个hint.txt $black_list = "/limit|by|substr|mid|,| ...

  3. javascript里面RegExp的exec函数的总结

    2019独角兽企业重金招聘Python工程师标准>>> 在我们的前端里面,经常会用到正则表达式进行检索字符串,刚好javascript里面提供RegExp来支持正则表达式,而RegE ...

  4. regexp 好汉字符串_如何在JavaScript中使用RegExp确认字符串的结尾

    regexp 好汉字符串 by Catherine Vassant (aka Codingk8) 由凯瑟琳·瓦森(Catherine Vassant)(又名Codingk8) 如何在JavaScrip ...

  5. javascript RegExp

    http://www.w3schools.com/jsref/jsref_obj_regexp.asp 声明------------- modifiers:{i,g,m} 1.     var pat ...

  6. RegExp 正则

    正则:就是一条规则,用于检验字符串的格式,目标就是字符串. 只要是表单提交的数据都是字符串 正则的定义: 1.var  reg=new RegExp(): 2.var reg=/格式/: 正则的方法: ...

  7. js RegExp用法

    您可以向 RegExp 对象添加第二个参数,以设定检索.例如,如果需要找到所有某个字符的所有存在,则可以使用 "g" 参数 ("global"). 如需关于如何 ...

  8. JavaScript学习(十三)---RegExp对象

    目录 创建RegExp对象 1.使用RegExp的显式构造函数 2.使用RegExp的隐式构造函数,采用纯文本格式 RegExp对象的属性 静态属性: index属性: input属性: lastIn ...

  9. MySQL中REGEXP正则查询同一个字段模糊搜索

    2019独角兽企业重金招聘Python工程师标准>>> SELECT name FROM dev WHERE name REGEXP 'PHP|SQL'; 查询name包含php或者 ...

  10. JavaScript标准库系列——RegExp对象(三)

    目录 导语 1.理解正则表达式 2.模式的规则 3.字符串和正则实例的属性和方法 4.检索实例 5. 小结 导语 正则表达式是处理字符串的一门艺术手法,应用场景经常出现在表单验证部分: JavaScr ...

最新文章

  1. CodeForces - 1328E Tree Queries(dfs序/LCA)
  2. ae抠像插件_AE抠像背景残留去除
  3. 走近分形与混沌(part1)--分形是趋于无穷的极限,是画不出来的
  4. 中文(英译) 爱情一句话哲理
  5. 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。
  6. LeetCode : Power of Two
  7. FCC新主席发推特称赞亚马逊,但被质疑违反了联邦道德准则
  8. java笔试面试题---基础部分4
  9. Java多线程——线程安全问题
  10. Javascript特效:天猫导航
  11. 博科brocade光纤交换机alias-zone的划分--实操案例
  12. 【避免windows权限问题】nodejs 配置全局 globle 缓存 catch
  13. iperf3 万兆测试
  14. stm32 PWM波
  15. Mathmatic绘制简易中国象棋棋盘
  16. 网易云信服务监控平台实践
  17. Zabbix 4.2 支持 Prometheus 数据收集
  18. 乐观锁与悲观锁的生动举栗讲解
  19. 致敬钢铁侠!!!!!
  20. vmware NSX 6.3.3 企业版序列号激活码密钥永久使用

热门文章

  1. 转 下一代云计算模式:Docker正掀起个性化商业革命
  2. ORA_HASH函数
  3. Retrofit使用教程(一)
  4. 前端工作越来越难找,是不是已经饱和了?
  5. 提供免费可商用的优秀背景视频素材——COVERR
  6. 送君千里终须一别,1胜2负,唯一战胜过AlphaGo的人退役了
  7. svchost.exe占用过高CPU和内存的解决方案
  8. android 华为手机拍照,华为手机拍照不行?可能是你模式不对!
  9. varbinary 与 text 不兼容如何解决
  10. opencv实现车牌识别之字符分割