在这个Spring Expression Language示例中,我们将学习如何使用正则表达式或regex来检查文本是否匹配特定模式。Spring EL支持使用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