由于业务的需要需要后台去验证正则表达式
前台脚本的正则表达式"^-?(\d{1}|((\d{1})\.)\d{1,6}|(\d{1}|((\d{1})\.)\d{1,6})\E[+,-]{0,1}\d{1,2})$"
成功验证指数没有问题。
到了java后台搞了有一会才完事,原来还有点不一样。本人对正则表达式也没学过,也只是现
用现学了。
最后java后台中这样写可以通过了"^-?(\d{1}|((\d{1})\.)\d{1,6}|(\d{1}|((\d{1})\.)\d{1,6})E[+,-]{0,1}\d{1,2})$"
\的意思是将下一字符标记为特殊字符、文本、反向引用或八进制转义符。
例如,“n”匹配字符“n”。“\n”匹配换行符。序列“\\”匹配“\”,“\(”匹配“(”。
可能这里E不是特殊字符,但在前台中E前面的\有没有都可以正常运行,不知所解。
java后台验证正则表达式两种方法
1)Pattern p = Pattern.compile("^-?\d{1,6}$");
Matcher m = p.matcher("798563216");
boolean result = m.matches();
当然还有find等方法。
2)直接字符串匹配如“1.2354”.matches("^-?\d{1,6}$");
find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数。
matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为数字类型或其他类型,一般要用matches()。
1的方法是先编译正则表达式,然后去建立匹配项,最后去执行匹配,这中方法如果匹配成功,则获得更多的信息
如开始,结束,分组等信息。
2的方法是直接验证字符串是否匹配某个表达式。
希望对大家有点帮助。