我有一个下拉菜单旁边的文本框,如果在下拉列表中选择了第二个或第三个元素,则该下拉列表旁边的文本框应该只接受数字或单词或日期,不允许使用特殊字符。任何人都可以为此提供服务器端java代码验证吗?
if(badRowDetails.getOperator()==2 || badRowDetails.getOperator ()==3)
{
char c[]=value.toCharArray ();
int count=0;
int count1=0;
for(int i=0;i<value.length ();i++)
{
int ascii=(int)c[i];
if((ascii >=97 && ascii<=122) || (ascii>=65 && ascii<=90))
{
count=count+1;
}
}
try
{
int num=Integer.parseInt(value);
}
catch(NumberFormatException nfe)
{
System.out.println ("Exception raised . "+nfe.getMessage ());
count1=count+1;
}
if(count==0 && count1>0)
{
errors.reject ("value","Operator IS , ISN'T can only have words,Numbers.");
}
}
}
谢谢
答案 0 :(得分:1)
public static void main(String... args) {
String s = "12:12:1990";
System.out.println(s.matches("(\\d+|\\w+|([0-2][0-9]|([3]([0]|[1]))):([0][1-9]|[1][1-2]):([1][9][0-9][0-9]|[2][0][0-9][0-9]))"));
}
PS:日期具有分隔符“:”(假设),范围介于(1900和2099)之间。您可以将代码中的分隔符替换为“:”,将其更改为所需的分隔符。不处理LEAP YEAR条件......
IP:Hello OP : true
IP :123 OP : true
IP :12:12:2011 Op :true
IP: 12:44:2012 OP :false
IP :][ OP :false
IP : 32:12:2013 OP : false
答案 1 :(得分:0)
如果字符串是字母数字,则使用如下所示的正则表达式将返回true:
Pattern pattern = Pattern.compile("^[a-zA-Z0-9]*$");
Matcher matcher = pattern.matcher(s);
if (matcher.find()){
return true;
}
return false;
日期更加艰难。我会查找正则表达式来验证日期。
答案 2 :(得分:0)
使用正则表达式如下:
if(badRowDetails.getOperator()==2 || badRowDetails.getOperator ()==3)
{
if(!value.matches("[A-Za-z0-9-]*")) {
errors.reject ("value","Operator IS , ISN'T can only have words,Numbers.");
}
}
答案 3 :(得分:0)
对于Alpha Numeric,我更倾向于使用正则表达式进行验证,使用DateFormatter
来检查日期(因为它需要大量的验证,例如闰年,月份,日期,年份等)
这里你快速举例说明我是怎么做的, public static void main(String [] args){
String s1="111";
String s11 ="11aa*";
String s2="hello";
String s3="2013-05-11";
System.out.println("Is number 111 "+isAlphaNum(s1));
System.out.println("Is number 11aa* "+isAlphaNum(s11));
System.out.println("Is word hello "+isAlphaNum(s2));
System.out.println("Is date 2013-05-11 "+isaDate(s3));
System.out.println("Is date 111 "+isaDate(s1));
System.out.println("Is date hello "+isaDate(s2));
}
private static boolean isAlphaNum(String word){
return word.matches("^[a-zA-Z0-9]*$");
}
private static boolean isaDate(String text){
if (text == null || !text.matches("\\d{4}-[01]\\d-[0-3]\\d")){
return false;
}
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
df.setLenient(false);
try {
df.parse(text);
return true;
} catch (ParseException ex) {
return false;
}
}
您可以根据需要更改日期格式globaly(动态)