powerwind 发表于 2006-6-18 22:48

正则表达式简介

正则表达式(Regular Expressions)是用来处理文本和匹配模式的。很多语言都支持正则表达式,比如:perl,JAVA,JSCRIPT等等。
    我们在某些文本编辑器进行查找替换时,其实也算是用了正则表达式。只是正则表达式的功能远不止此。先看看有哪些符号,匹配什么?

在JDK1.5的文档中,有这样的文字解释:


Character classes
a, b, or c (simple class)
[^abc] Any character except a, b, or c (negation)
a through z or A through Z, inclusive (range)
] a through d, or m through p: (union)
] d, e, or f (intersection)
] a through z, except for b and c: (subtraction)
] a through z, and not m through p: (subtraction)

Predefined character classes
. Any character (may or may not match line terminators)
\d A digit:
\D A non-digit: [^0-9]
\s A whitespace character: [ \t\n\x0B\f\r]
\S A non-whitespace character: [^\s]
\w A word character:
\W A non-word character: [^\w]


不想翻译它,给点中文的。

\w字母或数字;相当于

\W非字母,数字

\s[ \t\n\r\f]空字符;相当于 [ \t\n\r\f]

\S非空字符

\d数字;相当于

\D非数字字符

*前面元素出现0或多次

+前面元素出现1或多次

{m,n}前面元素最少出现m次,最多出现n次

?前面元素最多出现1次;相当于 {0,1}

$ 匹配输入字符串的结尾位置。


这些也只是部分而已。先给个例子。
在网上填资料时,有时会遇到输入框只能输入数据或者只能输入英文的情况。好,就给个只能输入数字的例子。

只能输入数字:
<input type="text" onkeyup="value=value.replace(/\D/g,'')"> 或:
<input type="text" onkeyup="value=value.replace(/[^0-9]/g,'')">

有时候用来验证输入是否合法,比如E-mail地址验证。

<script language="javascript">
function emailCheck(strEmail)
{
        var myReg = /^+@(+\.)+{2,3}$/;
        if(myReg.test(strEmail))
        alert("有效Email地址");
        else
        alert("无效Email地址");
}
</script>
<form>
<input type="text" name="mytext">
<input type="button" value="OK" onsubmit="return false" onclick="emailCheck(mytext.value)">
</form>


还有日期验证,网址验证等,这里就不再给出例子了。在JAVA里要用到Pattern和Match类,也免了例子。

本文只是简单的介绍,有兴趣的话可以关注下正则表达式,大家一起学习交流。

wool王 发表于 2006-6-19 09:39

j2ee中的validator框架,就是struts里面集成的那个验证框架,就支持在配置文件中写大量正则表达式来实现输入验证。

iptton 发表于 2006-9-3 10:30

开始学正则表达式了。。。。

iptton 发表于 2006-9-3 10:53

有个问题:在DW里,自带了的JS:

/\D+\_+\W+\s+\S+/

说是onlyNumbers但测试了好像不对。。。
onlyNumbers 应该是这个吧:
/^\d+$/

iptton 发表于 2006-9-3 13:24

学习正则表达式,做了个辅助页面。。。

将下面代码保存成一个HTM文件即可


规则输入例子: /\d/ 应输入为 \d 即不用两个斜杆,<br />
表达式:<br /><textarea name="regularStr" id="regularStr" cols="40" rows="2"></textarea><br />
测试字符串:<br /><textarea name="inStr" id="inStr" cols="40" rows="2"></textarea> <br />
<input type="button" name="chk" id="chk"value="Check"/><br />
<textAreaname="output" id="output"cols="16" rows="13"></textArea>
<script language="javascript" src="parase.js" type="text/javascript"></script>
<script type="text/javascript">
chk.onclick=function(){
        var inString=inStr.value;
        var reg=new RegExp(regularStr.value);
        output.value=reg+".test("+inString+")="+reg.test(inString);       
}</script>


[ 本帖最后由 iptton 于 2006-9-3 13:49 编辑 ]

iptton 发表于 2006-9-3 16:20


^(\d+|\(\d+,\d+\))([\+\-\*\/](\d+|\(\d+,\d+\)))*$

这个表达式表示为:

以 (a,b) 和c 两种式子为单元(?)的四则算式如

(3,4)*3+(44,54)-(23,3)

不知道对不对....

验算了几个

hexq 发表于 2006-9-4 20:06

validator,spring中也有,只是觉得有些地方处理不是很好,
页: [1]
查看完整版本: 正则表达式简介