吃水不忘挖井人系列:

EL表达式中使用函数

<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html lang="zh">
<head><script type="text/javascript">var phone= '${detailList.serviceRelease.responseiblePhone}'.replace(/(\d{3}).*(\d{4})/, "$1****$2");</script>
</head>
<body>

以下这俩正则应该都可,应对诸如 010-12345678 这种座机 以及 13312345678 这种手机号

.replace(/(\d{3}).*(\d{4})/, "$1****$2");
.replace(/^(\d{3}).*(\d{4})$/, "$1****$2");

问题是在代码里却不能这样写,否则报错 org.apache.jasper.JasperException: javax.el.ELException: Failed to parse the expression

    <span>${fn:replace(detailList.serviceRelease.phone,/(\d{3}).*(\d{4})/,"$1****$2")}</span><span>${detailList.serviceRelease.phone.replace(/(\d{3}).*(\d{4})/, "$1****$2")}</span>

因为 EL表达式不支持正则

正常思路应该是截取length-4到length的序号位

但是也不能用诸如

<span>${fn:substring(phone,phone.length-4,phone.length)}</span>

参考内容如下:  http://www.blogjava.net/lardern/archive/2009/03/22/261321.html

首先必须在JSP中声明这个标签库:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

调用方式为:fn:functionName(arg,...)
比如:${fn:length(aCollection)}
length是JSTL库中自带的函数,除此之外常的还有:

函数

描述

fn:contains(string, substring)

如果参数string中包含参数substring,返回true

fn:containsIgnoreCase(string, substring)

如果参数string中包含参数substring(忽略大小写),返回true

fn:endsWith(string, suffix)

如果参数 string 以参数suffix结尾,返回true

fn:escapeXml(string)

将有特殊意义的XML (和HTML)转换为对应的XML character entity code,并返回

fn:indexOf(string, substring)

返回参数substring在参数string中第一次出现的位置

fn:join(array, separator)

将一个给定的数组array用给定的间隔符separator串在一起,组成一个新的字符串并返回。

fn:length(item)

返回参数item中包含元素的数量。参数Item类型是数组、collection或者String。如果是String类型,返回值是String中的字符数。

fn:replace(string, before, after)

返回一个String对象。用参数after字符串替换参数string中所有出现参数before字符串的地方,并返回替换后的结果

fn:split(string, separator)

返回一个数组,以参数separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素

fn:startsWith(string, prefix)

如果参数string以参数prefix开头,返回true

fn:substring(string, begin, end)

返回参数string部分字符串, 从参数begin开始到参数end位置,包括end位置的字符

fn:substringAfter(string, substring)

返回参数substring在参数string中后面的那一部分字符串

fn:substringBefore(string, substring)

返回参数substring在参数string中前面的那一部分字符串

fn:toLowerCase(string)

将参数string所有的字符变为小写,并将其返回

fn:toUpperCase(string)

将参数string所有的字符变为大写,并将其返回

fn:trim(string)

去除参数string 首尾的空格,并将其返回

最后实际上可以有效解决问题的代码是:

<span>${fn:substring(detailList.phone,0,3)}****${fn:substring(detailList.phone,fn:length(detailList.phone)-4,fn:length(detailList.phone))}</span>

2020-11-18

ALL BY MedusaSTears

【MedusaSTears】记一次踏坑:EL表达式不支持正则_EL表达式使用函数一览表_手机/座机号码脱敏正则规则相关推荐

  1. el表达式ne什么意思_EL表达式的基本语法及运算符

    EL(Expression Language) 是为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp ...

  2. el表达式ne什么意思_el表达式中的比较eq ne gt lt

    eq相等 ne.neq不相等, gt大于, lt小于 gt大于, lt小于 gte.ge大于等于 lte.le 小于等于 not非 mod求模 is [not] div by是否能被某数整除 is [ ...

  3. 明显调用的表达式前的括号必须具有指针函数类型_基于指针对象的方法

    " 本文来源于<The Go Programming Language>" 6.2. 基于指针对象的方法 当调用一个函数时,会对其每一个参数值进行拷贝,如果一个函数需要 ...

  4. 明显调用的表达式前的括号必须具有指针函数类型_每天三分钟带你搞懂C++基础Day5 处理类型 typedef、auto、decltype...

    类型别名(type alias)一个名字,是某种类型的同义词.使用类型名有很多好处,能让复杂的类型名字变得简单明了,易于理解和使用. 有两种方法可用于定义类型别名.传统的方法是使用关键字typedef ...

  5. MANIFOLD 2-G 踏坑手册

    MANIFOLD 2-G 踏坑手册 1. 电源供电问题 2. MANIFOLD 2-G联网问题 3. MANIFOLD 2-G风扇问题 4. 换源 5.MANIFOLD 2-G软件安装 6. open ...

  6. Purley平台Linpak测试,从踏坑开始一步步优化

    Purley平台Linpak测试,从踏坑开始一步步优化 #记2017年11月第一次踏坑事件 测试平台配置: 6nodes CPU: Intel Gold 6132 @2.6GHz 14C RAM: 8 ...

  7. Reactjs 踏坑指南3:一些例子(未完成)

    React 踏坑指南3: 准备工作 知识准备 Reactjs 踏坑指南1: 一些概念 Reactjs 踏坑指南2: JSX&&组件 文件引用 引用文件 文件基本结构 <!DOCT ...

  8. DB数据源之SpringBoot+MyBatis踏坑过程(三)手工+半自动注解配置数据源与加载Mapper.xml扫描...

    DB数据源之SpringBoot+MyBatis踏坑过程(三)手工+半自动注解配置数据源与加载Mapper.xml扫描 liuyuhang原创,未经允许禁止转载    系列目录连接 DB数据源之Spr ...

  9. Reactjs 踏坑指南1: 一些概念

    Reactjs 踏坑指南1: 知识点 什么是React 虚拟DOM JSX 组件 生命周期和状态 事件 单项数据流 Reactjs和Angularjs的对比 React简介 React是一个Faceb ...

最新文章

  1. python七大神级插件_IntelliJ IDEA 15款超级牛逼插件推荐(自用,超级牛逼)
  2. “被遗忘的宇航员”逝世,他是阿波罗11号上唯一没登月的人
  3. ctr 平滑_预算平滑技术在58商业的探索与实践
  4. 22_2D函数优化实例
  5. 虚拟环境安装python3
  6. b宝塔 centos端口更改_centos修改ssh默认端口号的方法示例
  7. Smarty中直接加JS代码和将JS代码写在literal标签里
  8. oracle 中关于 SID db_name、instance_name (转)
  9. Beaglebone移植DDS模块驱动(AD9833)
  10. 计算机网络模拟器 mac,网易mumu模拟器mac版使用常见问题解决办法_3DM手游
  11. OpenCV.金字塔(Pyramid).向下金字塔
  12. 读《如何阅读一本书》乱摘
  13. 哪种硬盘坏道检测工具最好,有硬盘坏道怎么修复
  14. 卡卡云模板(适配彩虹发卡系统)
  15. MySQL的COUNT语句--count(*)、 count(常量)、 count(列名)
  16. windows10共享移动热点(或说 电脑开WIFI),让手机连接共享的移动热点WIFI
  17. php 转义反绡线,PHP汉字转拼音
  18. 第21节 ACL——控制路由器上接口大门的进出规则
  19. python前端——HTML超文本标记语言、CSS层叠样式表
  20. 计算机用户登录界面壁纸,怎么修改电脑开机的登陆界面的壁纸

热门文章

  1. 北理 计算机学院 钟宏,施重阳_北京理工大学计算机学院
  2. Sakai的安装使用 1
  3. 【Python】一键抠图,3行代码实现照片/证件照换背景色
  4. Demo-2(豆瓣)
  5. 中国双目立体显微镜市场趋势报告、技术动态创新及市场预测
  6. 打扮114(淘宝试衣间产品)使用帮…
  7. 敏捷革命:提升个人创造力与企业效率的全新协作模式--读书笔记全书
  8. [转帖] 25个超级经典故事!!!
  9. 计算机采用隔行扫描,逐行隔行扫描的超详细讲解
  10. 微信小程序开发(三)表单提交、PHP后台数据交互