JAVA网站制作之javascript正则表达式
因为能用到多少功能就用多少,不能用就不用!总的来说:要简单要性能好,可以不用框架。你说java复杂,就是因为你把java(j2ee)与这些框架混在了一起。正则正则表达式是一个形貌字符形式的对象。JavaScript的RegExp对象和String对象界说了利用正则表达式来实行壮大的形式婚配和文本检索与交换函数的办法.
***********************
JavaScript//
***********************
在JavaScript中,正则表达式是由一个RegExp对象暗示的.固然,可使用一个RegExp()机关函数来创立RegExp对象,
也能够用JavaScript1.2中的新增加的一个特别语法来创立RegExp对象.就像字符串间接量被界说为包括在引号内的字符一样,
正则表达式间接量也被界说为包括在一对斜杠(/)之间的字符.以是,JavaScript大概会包括以下的代码:
varpattern=/s$/;
这行代码创立一个新的RegExp对象,并将它赋给变量parttern.这个特别的RegExp对象和一切以字母"s"开头的字符串都婚配.用RegExp()也能够界说
一个等价的正则表达式,代码以下:
varpattern=newRegExp("s$");
不管是用正则表达式间接量仍是用机关函数RegExp(),创立一个RegExp对象都是对照简单的.较为坚苦的义务是用正则表达式语法来形貌字符的形式.
JavaScript接纳的是Perl言语正则表达式语法的一个相称完全的子集.
正则表达式的形式标准是由一系列字符组成的.年夜多半字符(包含一切字母数字字符)形貌的都是依照字面意义举行婚配的字符.如许说来,正则表达式/java/就和
一切包括子串"java"的字符串相婚配.固然正则表达式中的别的字符不是依照字面意义举行婚配的,但它们都具有特别的意义.正则表达式/s$/包括两个字符.
第一个特别字符"s"是依照字面意义与本身相婚配.第二个字符"$"是一个特别字符,它所婚配的是字符串的开头.以是正则表达式/s$/婚配的就是以字母"s"开头
的字符串.
1.间接量字符
我们已发明了,在正则表达式中一切的字母字符和数字都是依照字面意义与本身相婚配的.JavaScript的正则表达式还经由过程以反斜杠()开首的本义序列撑持某些非
字母字符.比方,序列"
"在字符串中婚配的是一个间接量换行符.在正则表达式中,很多标点标记都有特别的寄义.上面是这些字符和它们的寄义:
正则表达式的间接量字符
字符婚配
________________________________
字母数字字符本身
f换页符
换行符
回车
制表符
v垂直制表符
/一个/间接量
一个间接量
.一个.间接量
*一个*间接量
+一个+间接量
?一个?间接量
|一个|间接量
(一个(间接量
)一个)间接量
[一个[间接量
]一个]间接量
{一个{间接量
}一个}间接量
XXX由十进制数XXX指定的ASCII码字符
Xnn由十六进制数nn指定的ASCII码字符
cX把持字符^X.比方,cI等价于 ,cJ等价于
___________________________________________________
假如想在正则表达式中利用特别的标点标记,必需在它们之前加上一个"".
2.字符类
将独自的间接符放进中括号内就能够组分解字符类.一个字符类和它所包括的任何一个字符都婚配,以是正则表达式//和字母"a","b","c"中的任何一个
都婚配.别的还能够界说否认字符类,这些类婚配的是除那些包括在中括号以内的字符外的一切字符.界说否认字符尖时,要将一个^标记作为从左中括号算起的第
一个字符.正则表达式的汇合是//.
因为某些字符类十分经常使用,以是JavaScript的正则表达式语法包括一些特别字符和本义序列来暗示这些经常使用的类.比方,s婚配的是空格符,制表符和别的空缺符,s
婚配的则是空缺符以外的任何字符.
正则表灰式的字符类
字符婚配
____________________________________________________
[...]位于括号以内的恣意字符
[^...]不在括号当中的恣意字符
.除换行符以外的恣意字符,等价于[^
]
w任何单字字符,等价于
W任何非单字字符,等价于[^a-zA-Z0-9]
s任何空缺符,等价于[
fv]
S任何非空缺符,等价于[^
fv]
d任何数字,等价于
D除数字以外的任何字符,等价于[^0-9]
[]一个退格间接量(惯例)
________________________________________________________________
3.复制
用以上的正则表式的语法,能够把两位数形貌成/dd/,把四位数形貌成/dddd/.但我们还没有一种办法能够用来形貌具有恣意多半位的数字大概是一个
字符串.这个串由三个字符和跟从在字母以后的一名数字组成.这些庞大的形式利用的正则表达式语法指定了该表达式中每一个元素要反复呈现的次数.
指定复制的字符老是呈现在它们所感化的形式前面.因为某种复制范例相称经常使用.以是有一些特别的字符专门用于暗示它们.比方:+号婚配的就是复制前一形式一次
或屡次的形式.上面的表列出了复制语法.先看一个例子:
/d{2,4}///婚配2到4间的数字.
/w{3}d?///婚配三个单字字符和一个恣意的数字.
/s+javas+///婚配字符串"java",而且该串前后能够有一个或多个空格.
/[^"]*///婚配零个或多个非引号字符.
正则表达式的复制字符
字符寄义
__________________________________________________________________
{n,m}婚配前一项最少n次,可是不克不及凌驾m次
{n,}婚配前一项n次,大概屡次
{n}婚配前一项刚好n次
?婚配前一项0次或1次,也就是说前一项是可选的.等价于{0,1}
+婚配前一项1次或屡次,等价于{1,}
*婚配前一项0次或屡次.等价于{0,}
___________________________________________________________________
4.选择,分组和援用
正则表达式的语法还包含指定选择项,对子表达式分组和援用前一子表达式的特别字符.字符|用于分开供选择的字符.比方:/ab|cd|ef/婚配的是字符串"ab",大概是
字符串"cd",又大概"ef"./d{3}|{4}/婚配的是要末是一个三位数,要末是四个小写字母.在正则表达式中括号具有几种感化.它的次要感化是把独自的项目分组
成子表达式,以即可以像处置一个自力的单位那种用*、+或?来处置那些项目.比方:/java(script)?/婚配的是字符串"java",厥后既能够有"script",也能够没有./
(ab|cd)+|ef)/婚配的既能够是字符串"ef",也能够是字符串"ab"大概"cd"的一次或屡次反复.
在正则表达式中,括号的第二个用处是在完全的形式中界说子形式。当一个正则表达式乐成地和方针字符串相婚配时,能够从方针串中抽出和括号中的子形式相婚配
的部分.比方,假定我们正在检索的形式是一个或多个字母前面跟从一名或多位数字,那末我们可使用形式/+d+/.可是因为假定我们真正体贴的是每一个婚配
尾部的数字,那末假如我们将形式的数字部分放在括号中(/+(d+)/),我们就能够从所检索到的任何婚配中抽取数字了,以后我们会对此举行剖析的.
代括号的子表达式的另外一个用处是,同意我们在统一正则表达式的前面援用后面的子表达式.这是经由过程在字符串后加一名或多位数字来完成的.数字指的是代括号的
子表达式在正则表达式中的地位.比方:1援用的是第一个代括号的子表达式.3援用的是第三个代括号的子表达式.注重,因为子表达式能够嵌套在别的子表达式中,
以是它的地位是被计数的左括号的地位.
比方:鄙人面的正则表达式被指定为2:
/(ava(cript))siss(funw*)/
对正则表达式中前一子表达式的援用所指定的并非谁人子表达式的形式,而是与谁人形式相婚配的文本.如许,援用就不但是匡助你输出正则表达式的反复部分的快
捷体例了,它还实行了一条规约,那就是一个字符串各个分别的部分包括的是完整不异的字符.比方:上面的正则表达式婚配的就是位于单引号或双引号以内的一切字
符.可是,它请求入手下手和停止的引号婚配(比方两个都是双引号大概都是单引号):
/["][^"]*["]/
假如请求入手下手和停止的引号婚配,我们可使用以下的援用:
/(["])[^"]*1/
1婚配的是第一个代括号的子表达式所婚配的形式.在这个例子中,它实行了一种规约,那就是入手下手的引号必需和停止的引号相婚配.注重,假如反斜杠后跟从的数字比
代括号的子表达式数多,那末它就会被剖析为一个十进制的本义序列,而不是一个援用.你能够保持利用完全的三个字符来暗示本义序列,这们就能够制止搅浑了.比方,
利用 44,而不是44.上面是正则表达式的选择、分组和援用字符:
字符寄义
____________________________________________________________________
|选择.婚配的要末是该标记右边的子表达式,要末它右侧的子表达式
(...)分组.将几个项目分为一个单位.这个单位可由*、+、?和|等标记利用,并且还能够记着和这个组婚配的字符以供今后引
用利用
和第n个分组所婚配的字符相婚配.分组是括号中的子表达式(多是嵌套的).分组号是从左到右计数的左括号数
____________________________________________________________________
5.指定婚配的地位
我们已看到了,一个正则表达式中的很多元素才干够婚配字符串的一个字符.比方:s婚配的只是一个空缺符.另有一些正则表达式的元素婚配的是字符之间宽度为
0的空间,而不是实践的字符比方:婚配的是一个词语的界限,也就是处于一个/w字字符和一个w非字字符之间的界限.像如许的字符其实不指定任何一个婚配了的
字符串中的字符,它们指定的是婚配所产生的正当地位.偶然我们称这些元素为正则表达式的锚.由于它们将形式定位在检索字符串中的一个特定地位.最经常使用的锚元
素是^,它使形式依附于字符串的开首,而锚元素$则使形式定位在字符串的开端.
比方:要婚配词"javascript",我们可使用正则表达式/^javascript$/.假如我们想检索"java"这个词本身(不像在"javascript"中那样作为前缀),那末我们可使
用形式/sjavas/,它请求在词语java之前和以后都有空格.可是如许作有两个成绩.第一:假如"java"呈现在一个字符的开首大概是开头.该形式就不会与之婚配,除
非在开首和开头处有一个空格.第二:当这个形式找到一个与之婚配的字符时,它前往的婚配的字符串前端和后端都有空格,这并非我们想要的.因而,我们利用词语
的界限来取代真实的空格符s举行婚配.了局表达式是/java/.
上面是正则表达式的锚字符:
字符寄义
____________________________________________________________________
^婚配的是字符的开首,在多行检索中,婚配的是一行的开首
$婚配的是字符的开头,在多行检索中,婚配的是一行的开头
婚配的是一个词语的界限.简而言之就是位于字符w和w之间的地位(注重:[]婚配的是退格符)
B婚配的长短词语的界限的字符
_____________________________________________________________________
6.属性
有关正则表达式的语法另有最初一个元素,那就是正则表达式的属性,它申明的是初级形式婚配的划定规矩.和别的正则表达式语法分歧,属性是在/标记以外申明的.即它
们不呈现在两个斜杠之间,而是位于第二个斜杠以后.javascript1.2撑持两个属性.属性i申明形式婚配应当是巨细写不敏感的.属性g申明形式婚配应当是全局的.也
就是说,应当找出被检索的字符串中一切的婚配.这两种属性团结起来就能够实行一个全局的,巨细写不敏感的婚配.
比方:要实行一个巨细不敏感的检索以找到词语"java"(大概是"java"、"JAVA"等)的第一个详细值,我们可使用巨细不敏感的正则表达式/java/i.假如要在
一个字符串中找到"java"一切的详细值,我们还能够增加属性g,即/java/gi.
以下是正则表达式的属性:
字符寄义
_________________________________________
i实行巨细写不敏感的婚配
g实行一个全局的婚配,简而言之,就是找到一切的婚配,而不是在找到第一个以后就中断了
_________________________________________
除属性g和i以外,正则表达式就没有别的像属性一样的特征了.假如将机关函数RegExp的静态属性multiline设置为true,那末形式婚配将以多行的形式举行.在这
种形式下,锚字符^和$婚配的不但是检索字符串的开首和开头,还婚配检索字符串外部的一行的开首和开头.比方:形式/Java$/婚配的是"Java",可是其实不婚配
"Java
isfun".假如我们设置了multiline属性,那末后者也将被婚配:
RegExp.multiline=true;
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。 关于设计模式的资料,还是向大家推荐banq的网站 http://www.ckuyun.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 是一种语言,用以产生「小应用程序(Applet(s)) Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 是一种将安全性(Security)列为第一优先考虑的语言 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 Java是一种计算机编程语言,拥有跨平台、面向对java Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
页:
[1]
2