Java如何在Spring EL中使用正则表达式进行模式匹配?
在这个SpringExpressionLanguage示例中,我们将学习如何使用正则表达式或regex来检查文本是否匹配特定模式。SpringEL支持使用matches运算符的正则表达式。
该matches运营商将检查值具有由正则表达式的字符串定义的模式,并返回评价结果作为一个布尔值true,如果文本的正则表达式匹配或false否则。
例如,我们可以使用matches运算符来检查给定的电子邮件地址是否为有效的电子邮件地址。如以下示例所示:
<property name="emailValid"
value="#{user.email matches '^[_A-Za-z0-9-]+(.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(.[A-Za-z0-9]+)*(.[A-Za-z]{2,})$'}"/>此配置将评估user.email属性,以检查电子邮件模式是否与给定的正则表达式匹配。如果匹配,则该emailValid属性将设置为,true否则为false。
让我们看完整的例子。这是spring配置文件,Userbean和用于运行配置文件的简单类。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="user">
<constructor-arg name="email" value="nhooo@gmail.com"/>
<property name="emailValid"
value="#{user.email matches '^[_A-Za-z0-9-]+(.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(.[A-Za-z0-9]+)*(.[A-Za-z]{2,})$'}"/>
</bean>
<bean id="user2">
<constructor-arg name="email" value="nhooo.at.gmail.dot.com"/>
<property name="emailValid"
value="#{user2.email matches '^[_A-Za-z0-9-]+(.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(.[A-Za-z0-9]+)*(.[A-Za-z]{2,})$'}"/>
</bean>
</beans>该Userbean是一个简单的POJO有两个属性,一个字符串email属性和一个布尔值validEmail属性。
package org.nhooo.example.spring.el;
public class User {
private String email;
private boolean emailValid;
public User() {
}
public User(String email) {
this.email = email;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public boolean isEmailValid() {
return emailValid;
}
public void setEmailValid(boolean emailValid) {
this.emailValid = emailValid;
}
}最后是应用程序类。
package org.nhooo.example.spring.el;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpELRegexExample {
public static void main(String[] args) {
ApplicationContext context =
new ClassPathXmlApplicationContext("spel-regex.xml");
User user = (User) context.getBean("user");
System.out.println("user.getEmail() = " + user.getEmail());
System.out.println("user.isEmailValid() = " + user.isEmailValid());
User user2 = (User) context.getBean("user2");
System.out.println("user.getEmail() = " + user2.getEmail());
System.out.println("user.isEmailValid() = " + user2.isEmailValid());
}
}当我们运行代码时,我们将获得以下结果:
user.getEmail() = nhooo@gmail.com user.isEmailValid() = true user.getEmail() = nhooo.at.gmail.dot.com user.isEmailValid() = false