- 浏览: 207198 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zjlhonest:
不需要那个tables.add也能成功啊,悲催
JAVA 获取数据库中表的结构 -
zjlhonest:
那个tables.add(table),tables是那个类的 ...
JAVA 获取数据库中表的结构 -
yangrenjun:
一定要注意起的类名要一直。否则编译通不过去
这里是MyEcli ...
生成 MyEclipse 注册码 -
chokee:
不错比较清楚
Oracle数据库-建库、建表空间,建用户 -
vcxiaohei:
谢谢,很好用!!!
验证子网掩码的合法性
括号(2)
前面我们曾经讨论过一次括号的问题,见下面这个例子:
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- reg = /^(b|c).+/;
- str='crazy.grass.com';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } reg = /^(b|c).+/; str='crazy.grass.com'; execReg(reg,str); </script>
这个正则是为了实现只匹配以b或者c开头的字符串,一直匹配到换行字符,但是。上面我们已经看到了,可以使用“\1”来反向引用这个括号里的子正则表达式所匹配的内容。而且exec方法也会将这个字正则表达式的匹配结果保存到返回的结果中。
返回结果:crazy.grass.com,c
不记录子正则表达式的匹配结果
使用形如(?:pattern)的正则就可以避免保存括号内的匹配结果。例如:
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- reg = /^(?:b|c).+/;
- str='crazy.grass.com';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } reg = /^(?:b|c).+/; str='crazy.grass.com'; execReg(reg,str); </script>
可以看到返回的结果不再包括那个括号内的字正则表达式多匹配的内容
同理,反向引用也不好使了:
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- reg = /^(b|c)\1/;
- str='ccrazy.grass.com';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } reg = /^(b|c)\1/; str='ccrazy.grass.com'; execReg(reg,str); </script>
返回cc,c。cc是整个正则表达式匹配的内容,而b是第一个子正则表达式匹配的内容。
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- reg = /^(?:b|c)\1/;
- str='ccrazy.grass.com';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } reg = /^(?:b|c)\1/; str='ccrazy.grass.com'; execReg(reg,str); </script>
返回null。由于根本就没有记录括号内匹配的内容,自然没有办法反向引用了。
正向预查
形式:(?=pattern)
所谓正向预查,意思就是:要匹配的字符串,后面必须紧跟着pattern!
我们知道正则表达式/crazy/会匹配crazy。同样,也会匹配crazy9中的crazy。但是我们可能希望,crazy只能匹配crazy8中的crazy。这时候就可以像下面这样写:/crazy(?=8)/,看两个实例:
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- reg = /crazy(?=8)/;
- str='crazy9';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } reg = /crazy(?=8)/; str='crazy9'; execReg(reg,str); </script>
返回null。
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- reg = /crazy(?=8)/;
- str='crazy8';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } reg = /crazy(?=8)/; str='crazy8'; execReg(reg,str); </script>
匹配crazy。
需要注意的是,括号里的内容并不参与真正的匹配,只是检查一下后面的字符是否符合要求而已,例如上面的正则,返回的是crazy,而不是crazy8。
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- reg = /crazy(?=grass)/;
- str='crazygrass';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } reg = /crazy(?=grass)/; str='crazygrass'; execReg(reg,str); </script>
返回是crazy。
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- reg = /crazy(?=grass)/;
- str='crazycao';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } reg = /crazy(?=grass)/; str='crazycao'; execReg(reg,str); </script>
返回是null,因为crazy后面不是grass
?!
形式(?!pattern)和?=恰好相反,要求字符串的后面不能紧跟着某个pattern,还拿上面的例子:
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- reg = /crazy(?!grass)/;
- str='crazycao';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } reg = /crazy(?!grass)/; str='crazycao'; execReg(reg,str); </script>
返回crazy
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- reg = /crazy(?!grass)/;
- str='crazycao';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } reg = /crazy(?!grass)/; str='crazycao'; execReg(reg,str); </script>
返回null
匹配元字符
首先要搞清楚什么是元字符呢?我们之前用过*,+,?之类的符号,它们在正则表达式中都有一定的特殊含义,类似这些有特殊功能的字符都叫做元字符。例如
reg = /c*/;
表示有任意个c,但是如果我们真的想匹配’c*’这个字符串的时候怎么办呢?只要将*转义了就可以了,如下:
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- reg = /c\*/;
- str='c*';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } reg = /c\*/; str='c*'; execReg(reg,str); </script>
返回匹配的字符串:c*。
同理,要匹配其他元字符,只要在前面加上一个“\”就可以了。
正则表达式的修饰符
全局匹配,修饰符g
形式:/pattern/g
例子:reg = /b/g;
后面再说这个g的作用。先看后面的两个修饰符。
不区分大小写,修饰符i
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- var reg = /b/;
- var str = 'BBS';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } var reg = /b/; var str = 'BBS'; execReg(reg,str); </script>
返回null,因为大小写不符合。
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- var reg = /b/;
- var str = 'BBS';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } var reg = /b/; var str = 'BBS'; execReg(reg,str); </script>
匹配到B,这个就是i修饰符的作用了。
行首行尾,修饰符m
形式:/pattern/m
m修饰符的作用是修改^和$在正则表达式中的作用,让它们分别表示行首和行尾。例如:
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- var reg = /^b/;
- var str = 'test\nbbs';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } var reg = /^b/; var str = 'test\nbbs'; execReg(reg,str); </script>
匹配失败,因为字符串的开头没有b字符。但是加上m修饰符之后:
- <script type="text/javascript">
- function execReg(reg,str){
- var result = reg.exec(str);
- alert(result);
- }
- var reg = /^b/m;
- var str = 'test\nbbs';
- execReg(reg,str);
- </script>
<script type="text/javascript"> function execReg(reg,str){ var result = reg.exec(str); alert(result); } var reg = /^b/m; var str = 'test\nbbs'; execReg(reg,str); </script>
匹配到b,因为加了m修饰符之后,^已经表示行首,由于bbs在字符串第二行的行首,所以可以成功地匹配。
发表评论
-
常用JS验证(一)
2012-02-01 13:26 6741. js(文本框只允许输入数字) <form& ... -
iframe 高度自适应性
2012-01-31 17:51 1042iframe 自动高 通常做后台的时候,都喜欢 ... -
ztress
2011-11-03 16:36 936官网地址:http://www.baby6 ... -
window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。
2011-05-24 10:53 2041利用JS中window.showModalDialog()详 ... -
js 屏蔽右键
2011-05-23 10:25 728<SCRIPT> function rf() ... -
验证子网掩码的合法性
2010-07-16 16:23 3321validateMask.js源代码: ========== ... -
a href=#与 a href=javascript:void(0) 的区别,以及location.href含义
2010-03-11 11:37 13921. location : 是windows窗口内 ... -
js 动态生成表格
2010-03-09 17:32 2700javascript控制table var ... -
事件源 EVENT
2010-03-09 16:55 863event.srcElement.X显示一个控件的各种属性 ... -
js 内置对象
2010-03-04 09:45 1128Java代码 <script lan ... -
Js的正则表达式(一)
2010-03-04 09:43 891创建一个正则表达式有两种方法 Java代码 ... -
JS的正则表达式(二)
2010-03-04 09:42 893二选一,正则表达式中的或,“|“ b|c表示,匹配b或者c。 ... -
JS的正则表达式(三)
2010-03-04 09:41 1023边界与非边界\b表示的 ... -
JAVASCRIPT正则表达式(五)
2010-03-04 09:37 966exec方法详解 exec方法的返回值 exec方法返回的 ... -
JavaScript的系统函数学习
2010-03-04 09:35 859编码处理函数 1) encode ...
相关推荐
js的正则表达式js的正则表达式js的正则表达式js的正则表达式
许多语言,包括Perl、PHP、Python、JavaScript和JScript,都支持用正则表达式处理文本,一些文本编辑器用正则表达式实现高级“搜索-替换”功能。那么Java又怎样呢?本文写作时,一个包含了用正则表达式进行文本处理...
js正则表达式,按甲方(银行)提供的个人证件信息采集规则编写的对应正则表达式
js正则表达式限制文本框只能输入数字,能输小数点.js正则表达式限制文本框只能输入数字,能输小数点.
javascript正则表达式迷你书 (1).pdf
js正则表达式限制文本框只能输入字母和汉字js正则表达式限制文本框只能输入字母和汉字
js正则表达式校验数字、email、身份证号等
正则表达式 JS 身份证验证 正则表达式 JS 身份证验证 正则表达式 JS 身份证验证
对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,《正则表达式经典实例》给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。...
了解正则表达式概念 掌握正则表达式的语法 熟练掌握正则表达式在JavaScript中的应用
jq非空验证,为空的时候input后面加红色字体的用户名不能为空。 js正则表达式验证邮箱和手机号码,验证邮箱必须含有@符,手机号码必须1开头并且固定11个字符
使用JS正则表达式,选取video元素的src属性的值,利用jQuery选取元素
ECMAScript v3对JavaScript正则表达式进行了标准化。JavaScript 1.2实现了ECMAScript v3要求的正则表达式特性的子集,JavaScript 1.5实现了完整的标准。JavaScript的正则表达式完全以Perl程序设计语言的正则表达式...
JavaScript验证正则表达式大全.txtJavaScript验证正则表达式大全.txtJavaScript验证正则表达式大全.txtJavaScript验证正则表达式大全.txtJavaScript验证正则表达式大全.txtJavaScript验证正则表达式大全....
正则表达式是程序员必备的强大工具,得到了各种Unix实用程序,以及Perl、Java、JavaScript、C#等编程语言的支持。读完本书,你会对正则表达式的常用语法了然于胸。掌握正则表达式是提升编程效率、节约时间的一大法.....
JS正则表达式大全(正则表达式用于简化js中的代码,做网页的朋友可以只作了解,能实现效果会用就行,不需自己能写出来)。
包含js正则表达式基础知识、Jakarta-ORO库和一些HTML应用实例
javascript常用正则表达式大全,基本覆盖基本需求的正则表达式
一个正则表达式验证格式的方法 你一个可以调用的demo valid(str,tostr) str:字符串 tostr:格式 yy-mm-dd 支持.,/,-三种格式。