正则表达式简介
正则表达式(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类,也免了例子。
本文只是简单的介绍,有兴趣的话可以关注下正则表达式,大家一起学习交流。 j2ee中的validator框架,就是struts里面集成的那个验证框架,就支持在配置文件中写大量正则表达式来实现输入验证。 开始学正则表达式了。。。。 有个问题:在DW里,自带了的JS:
/\D+\_+\W+\s+\S+/
说是onlyNumbers但测试了好像不对。。。
onlyNumbers 应该是这个吧:
/^\d+$/ 学习正则表达式,做了个辅助页面。。。
将下面代码保存成一个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 编辑 ]
^(\d+|\(\d+,\d+\))([\+\-\*\/](\d+|\(\d+,\d+\)))*$
这个表达式表示为:
以 (a,b) 和c 两种式子为单元(?)的四则算式如
(3,4)*3+(44,54)-(23,3)
不知道对不对....
验算了几个 validator,spring中也有,只是觉得有些地方处理不是很好,
页:
[1]