Java Spring表单检查输入字符串是否包含特殊字符



我正在尝试创建一个Java弹簧表单,该表格检查输入字符串是否包含特殊字符。例如,当用户在包含特殊字符的字符串中类型时,消息将弹出,说明输入字符串包含特殊字符。

我的问题是如何实现Java函数以检查输入字符串中的特殊字符?

模型

 package com.mkyong.customer.model;
public class Customer {
	
	String userName;
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	
}

控制器

package com.mkyong.customer.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;
import com.mkyong.customer.model.Customer;
public class TextBoxController extends SimpleFormController{
	
	public TextBoxController(){
		setCommandClass(Customer.class);
		setCommandName("customerForm");
	}
	
	@Override
	protected ModelAndView onSubmit(HttpServletRequest request,
			HttpServletResponse response, Object command, BindException errors)
			throws Exception {
		Customer customer = (Customer)command;
		return new ModelAndView("CustomerSuccess","customer",customer);
	
	}
	
}

客户形式

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<html>
<head>
<style>
.error {
	color: #ff0000;
}
.errorblock{
	color: #000;
	background-color: #ffEEEE;
	border: 3px solid #ff0000;
	padding:8px;
	margin:16px;
}
</style>
</head>
<body>
<h2>Java Textbox Special Characters</h2>
<form:form method="POST" commandName="customerForm">
<form:errors path="*" cssClass="errorblock" element="div"/>
<table>
<tr>
<td>Keyword:</td>
<td><form:input path="userName" /></td>
<td><form:errors path="userName" cssClass="error" /></td>
</tr>
<tr>
<td colspan="3"><input type="submit" /></td>
</tr>
</table>
</form:form>
</body>
</html>

customeruccess

<html>
<body>
<h2>Java Textbox Special Characters</h2>
Keyword: ${customer.userName}
</body>
</html>

Pattern regex = Pattern.compile("[$&+,:;=\\?@#|/'<>.^*()%!-]"); // fill in any chars that you consider special
if (regex.matcher(stringToCheck).find()) {
    // found
} 

您也可以查看Guava's CharMatcher(无正则且更可读)。您可以像这样构建自己的匹配逻辑:

boolean isAMatch = CharMatcher.WHITESPACE
    .or(CharMatcher.anyOf("[$&+,:;=\\?@#|/'<>.^*()%!-]")) // fill in any chars that you consider special
    .matchesAnyOf(stringToCheck);

转换特殊字符的单独方法

if(checkSpecialChar("^[^<>{}"/|;:.,~!?@#$%^=&*\]\\()\[¿§«»ω⊙¤°℃℉€¥£¢¡®©0-9_+]*$", source){
    // add your staff here
}
public boolean checkSpecialChar(String regex, String source) {
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(source);
    return matcher.find();

在春季,您可以像这样获得表格的值:

@RequestMapping(value = "/", method = RequestMethod.POST)
public String submit(@Valid @ModelAttribute("userName")String username){
    // And now you can check with the regex pattern from hovanessyan if it contains special characters
   Pattern regex = Pattern.compile("[$&+,:;=\\?@#|/'<>.^*()%!-]");
   if (regex.matcher(username).find()) {
      // found
   }
}

我希望它有帮助。

最新更新