You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则表达式中如何允许Unicode字母(p{L})后存在任意数量的末尾空格

解决方案

你之前的修改存在两个核心问题:

  • 末尾的[\\s]没有加量词,默认只能匹配单个空格,无法匹配多个连续空格
  • 原有正则的字符组中保留了'、-、,、.等符号,会导致ali.这类包含特殊字符的内容通过校验,不符合你的需求

你可以使用以下正则实现需求:

^\\s*[\\p{L}]+(?:\\s+[\\p{L}]+)*\\s*$

各部分规则说明:

  • ^ 匹配字符串的起始位置,避免内容前出现非法字符
  • \\s* 匹配开头0个或多个空格,支持输入内容前有任意数量的空格
  • [\\p{L}]+ 匹配至少1个Unicode字母,确保非空格内容只能是各国语言的字母
  • (?:\\s+[\\p{L}]+)* 非捕获组,匹配0次或多次「1个以上空格 + 1个以上字母」的组合,支持中间用空格分隔多个姓名
  • \\s* 匹配末尾0个或多个空格,支持输入内容后有任意数量的空格
  • $ 匹配字符串的结束位置,避免内容后出现非法字符

修改后的调用代码示例:

validator.addValidation(userNameLayout, "^\\s*[\\p{L}]+(?:\\s+[\\p{L}]+)*\\s*$", context.resources.getString(R.string.verification_userdata_name_invalid))

如果你的业务确实需要支持姓名中出现'、-这类合法的姓名特殊字符(比如O'Conner、Jean-Pierre),可以把字母的字符组修改为[\\p{L}\\-']即可,调整后正则为:

^\\s*[\\p{L}\\-']+(?:\\s+[\\p{L}\\-']+)*\\s*$

内容的提问来源于stack exchange,提问作者Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:06:01