笔者在在写javaWeb的前端部分时,要求写一个输入框输入一个0到一百的小数,于是去网上找正则表达式的例子,可是找来找去都不正确,劳心费力,一怒之下决定自己去写一个。以下为个人的一些笔记。
先放结果:自己写的正则表达式和测试结果
/^(100|(([1-9]){1}[0-9]?|0{1})((\.)([0-9]){1,2})?)$/
现在逐步解释这个正则表达式:
首先我们在代码中使用时需要用两个“/”包围起来,个人理解类似于字符串的双引号。在表达式中,表达式元素一般采用【匹配字符+限定条件】的方式连在一起组成正则表达式,少数几个采用【限定条件+匹配字符】的方式。
- “^”表示以右边的字符开头,同理"$"表示以左边的字符为结尾。
- 表达式中的括号和四则运算的括号一致,表示优先级,“|”为“或”符号。
- [1-9]表示1到9的整数,{n}(正整数)表示匹配n个前面的字符,{n,m}(均为正整数)表示最少匹配n个最多匹配m个字符,那么[1-9]{1}的意思就是被匹配的字符是一个1-9之间的整数。
- “?”表示可以有一个有或者没有前面的字符,“([1-9]){1}[0-9]?|0{1}”限定的就是0到99的整数
- 和java一样,在正则表达式中,特殊字符需要在前面加转义符号,即用“/.”来表示小数点。结合前面的解释,“([0-9]){1,2})”表示小数点后面的以为或两位小数,“((\.)([0-9]){1,2})?”则表示有无这些小数部分均可。
- 在最后面加一个“$”表示以前面的字符结尾。如果不加,那么形如String s = "11.22werdSAEf"的字符串可以匹配前面的小数也可以通过。
在Jsp中的用法为:
//boolean test(value)方法进行匹配,如果value能够匹配成功则返回true var newPar=/^(100|(([1-9]){1}[0-9]?|0{1})((\.)([0-9]){1,2})?)$/; if(newPar.test(myString)){ //TODO... }
以上仅为个人在解决这个0到100小数的过程中所用的正则表达式记录,写得很初级,没有使用“/d”或者“*”等复杂符号。
学习参考网站:正则表达式教程
截图所用测试网站: Regexper
感谢阅读。