手机校验和邮箱校验

本文介绍了一个用于处理用户反馈信息的控制器实现,包括对手机号码和电子邮件的有效性验证,并通过MGMSuggestionService服务保存反馈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.zhongan.cashew.controller.suggestion;


import java.util.regex.Matcher;
import java.util.regex.Pattern;


import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.zhongan.shrimp.core.io.IResult;
import com.zhongan.shrimp.core.io.ResultBuilder;
import com.zhongan.shrimp.mgm.constant.MGMMessage;
import com.zhongan.shrimp.mgm.dto.MGMSuggestionDTO;
import com.zhongan.shrimp.mgm.service.MGMSuggestionService;


/**
 * 意见反馈
 * @author daichangbo
 * 2017年9月11日 下午4:13:28
 */
@Controller
@RequestMapping("feedBack")
public class FeedBackController {

private static final Logger logger = LoggerFactory.getLogger(FeedBackController.class);

@Autowired
private MGMSuggestionService mGMSuggestionService;


@RequestMapping("saveFeedBackInfo")
@ResponseBody
public IResult<String> saveFeedBackInfo(MGMSuggestionDTO mgmSuggestionDTO){

if(mgmSuggestionDTO == null){
return ResultBuilder.build(false, MGMMessage.PARAM_ERROR, "对象为空保存失败");
}
String mobile = mgmSuggestionDTO.getPhone();
if(StringUtils.isEmpty(mgmSuggestionDTO.getPhone())){
return ResultBuilder.build(false, MGMMessage.TEL_NULL_ERROR, "参数为空保存失败");
}else if(!mobile.matches("^1[3|4|5|7|8][0-9]\\d{4,8}$")){  
/*^匹配开始地方$匹配结束地方,[3|4|5|7|8]选择其中一个{4,8},\d从[0-9]选择 
            {4,8}匹配次数4~8    ,java中/表示转义,所以在正则表达式中//匹配/,/匹配""*/  
        //验证手机号码格式是否正确  
        return ResultBuilder.build(false, MGMMessage.OTP_LOGIN_PHONE_ERROR, "手机号码不正确保存失败");   
        }
String  email = mgmSuggestionDTO.getEmail();
if(StringUtils.isEmpty(email)){
return ResultBuilder.build(false, MGMMessage.EMAIL_NULL_ERROR, "邮箱为空保存失败");
}
if(checkEmail(email) == false){
return ResultBuilder.build(false, MGMMessage.EMAIL_ERROR, "邮箱格式不正确保存失败");
}

IResult<String> results = mGMSuggestionService.insertMgmSuggestion(mgmSuggestionDTO);
if(results.isSuccess()){
return ResultBuilder.build(true, MGMMessage.SUCCESS, "保存成功");
}
return ResultBuilder.build(false, MGMMessage.SYSTEM_ERROR, "保存失败");

}
/**
* 邮箱校验
* @param email
* @return
*/
public static  boolean checkEmail(String email){
 boolean flag = false;
 try{
  String check = "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$";
  Pattern regex = Pattern.compile(check);
  Matcher matcher = regex.matcher(email);
  flag = matcher.matches();
 }catch(Exception e){
  logger.error("验证邮箱地址错误", e);
  flag = false;
 }
 return flag;
}

}
### 实现手机号码和电子邮件的同时校验 为了在 UniApp 中实现对手机号码和电子邮件有效性的同时校验,可以借鉴 WxValidate.js 插件的思想来构建自定义验证逻辑。此插件提供了灵活的方法用于表单字段的验证[^3]。 #### 创建自定义验证器 首先,在项目中创建一个新的 JavaScript 文件 `customValidator.js` 来封装所需的验证规则: ```javascript // customValidator.js export default class CustomValidator { constructor() { this.rules = {}; } addRule(key, rule) { if (!this.rules[key]) { this.rules[key] = []; } this.rules[key].push(rule); } validate(data) { let errors = {}; Object.keys(this.rules).forEach((key) => { const rulesForField = this.rules[key]; const value = data[key]; rulesForField.forEach(({ test, message }) => { if (value && !test(value)) { errors[key] = message; } }); }); return { isValid: Object.keys(errors).length === 0, errors }; } } ``` 这段代码实现了基本的验证框架,允许为不同类型的输入添加特定的验证条件,并能够执行这些规则以返回是否有任何错误发生。 #### 定义具体的验证规则 接着,在页面组件内部引入上述文件并设置针对手机号码 (`phone`) 和电子邮箱 (`email`) 的具体验证规则: ```javascript import CustomValidator from '@/utils/customValidator'; const validator = new CustomValidator(); validator.addRule('phone', { test: /^1\d{10}$/.test, message: '请输入有效的中国大陆手机号' }); validator.addRule('email', { test: /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test, message: '请输入合法格式的电子邮件地址' }); ``` 这里分别设置了正则表达式模式匹配中国内地标准的移动电话号码以及通用形式的互联网电邮账号作为测试依据;当不满足相应格式时会给出提示信息给用户知道哪里出了错。 #### 使用验证器处理提交事件 最后一步是在用户的交互操作(比如点击按钮触发)里调用我们刚刚建立起来的对象来进行实际的数据检验工作: ```html <template> <!-- 假设有一个简单的form --> <view> <input v-model="formData.phone" placeholder="Enter phone number"/> <input v-model="formData.email" placeholder="Enter email address"/> <button @click="handleSubmit">Submit</button> <!-- 显示可能存在的错误消息 --> <div v-if="errors.phone">{{ errors.phone }}</div> <div v-if="errors.email">{{ errors.email }}</div> </view> </template> <script> export default { data() { return { formData: {}, errors: {} }; }, methods: { handleSubmit() { const result = validator.validate(this.formData); if(result.isValid){ console.log("Form is valid"); // 进行后续业务逻辑... }else{ this.errors = result.errors; } } } }; </script> ``` 以上就是完整的解决方案,它不仅适用于当前的需求场景——即在同一界面下完成两种不同类型的信息项有效性确认,而且还可以很容易扩展至更多复杂情况下的前端数据预检需求之上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值