gpt4 book ai didi

java - 正则表达式的 Java 输入验证问题

转载 作者:行者123 更新时间:2023-12-02 03:45:54 25 4
gpt4 key购买 nike

以下代码用于学生注册申请。由于某种原因,下面代码中首先显示的两个验证不允许数据输入到数据库中,然后在从主 Activity 页面登录时提取数据。

没有这两行,应用程序就可以完美运行。有人可以告诉我这个问题吗?

问题

            //issue
if (!uname.getText().toString().matches("[c|C][0-9]{7}"))
{uname.setError("Incorrect ID Format");}

//issue
if (!pass1.getText().toString().matches("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}$"))
{pass1.setError("Incorrect Password Format");}

注册.Java

package com.example.oliver.beckettreg;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widet.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class SignUp extends Activity {

DatabaseHelper helper = new DatabaseHelper(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.signup);
}

public void onSignUpClick(View v)
{
if(v.getId()== R.id.Bsignupbutton)
{


EditText name = (EditText)findViewById(R.id.TFname);
EditText email = (EditText)findViewById(R.id.TFemail);
EditText uname = (EditText)findViewById(R.id.TFuname);
EditText pass1 = (EditText)findViewById(R.id.TFpass1);
EditText pass2 = (EditText)findViewById(R.id.TFpass2);


String namestr = name.getText().toString();
String emailstr = email.getText().toString();
String unamestr = uname.getText().toString();
String pass1str = pass1.getText().toString();
String pass2str = pass2.getText().toString();


if(!pass1str.equals(pass2str))


{
//popup msg
Toast pass = Toast.makeText(SignUp.this , "Passwords don't match!" , Toast.LENGTH_SHORT);
pass.show();


}
else
{

if (name.getText().toString().length() == 0)
{name.setError("Name Required");}

if (!email.getText().toString().matches("[a-z]\\.[a-z]*[0-9]*@student\\.leedsbeckett\\.ac\\.uk"))
{email.setError("Incorrect Email Format");}

//issue
if (!uname.getText().toString().matches("[c|C][0-9]{7}"))
{uname.setError("Incorrect ID Format");}
//issue
if (!pass1.getText().toString().matches("^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\\S+$).{8,}$"))
{pass1.setError("Incorrect Password Format");}

else{
//insert the details in database
Contact c = new Contact();
c.setName(namestr);
c.setEmail(emailstr);
c.setUname(unamestr);
c.setPass(pass1str);

helper.insertContact(c);


Toast pass = Toast.makeText(SignUp.this , "User Registered" , Toast.LENGTH_SHORT);
pass.show();

}

}

}


}

public void onButtonClick(View v) {

if (v.getId() == R.id.Blogin2) {
Intent i = new Intent(SignUp.this, com.example.oliver.beckettreg.MainActivity.class);
startActivity(i);

}
}
}

电子邮件的正确格式是a.aaaaaa8234@leedsbeckett.ac.uk

uname 的正确格式是c3400554

密码的正确格式是:

  • 数字必须至少出现一次
  • 小写字母必须至少出现一次
  • 大写字母必须至少出现一次
  • 特殊字符必须至少出现一次
  • 整个字符串中不允许有空格
  • 任何东西,至少八个地方

最佳答案

对于您的用户名,请使用:uname.getText().toString().matches(/[c|C][0-9]{7}/)

对于电子邮件来说,这是一个经典:

function validateEmail(email) {
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(email);
}

来自:Validate email address in JavaScript?

密码:

  function checkPassword(pass)
{
var re = /(?=.*[\d])(?=.*[a-z])(?=.*[A-Z]).{8,}/;
return re.test(pass);
}

关于java - 正则表达式的 Java 输入验证问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36297452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com