java - REGEX - 允许多个空格,并且连字符 (-) 前后不能有空格

标签 java regex space

对于使用正则表达式进行名称验证,我需要满足以下要求。

  • 只能包含字母、空格、撇号 (') 和连字符 (-)
  • 字符之间允许有多个空格(例如:“asd asd asd asd ”)
  • 连字符 (-) 前后不能有空格(例如:允许使用“abc-abc”,不允许使用“abc -abc”和“abc- abc”)

我目前正在使用这个正则表达式:

(^[a-zA-Z' ]+(?:[- ][a-zA-Z']+)*$ 

( https://regexr.com/6umck )

此正则表达式满足所有要求,但连字符前允许有空格。

如何在连字符之前不允许有空格,也满足此处的所有其他要求?

最佳答案

您可以使用此正则表达式:

^ *[a-zA-Z']+(?:(?:-| +)[a-zA-Z']+)* *$

RegEx Demo

正则表达式分解:

  • ^:开始
  • *:匹配 0 个或多个前导空格
  • [a-zA-Z']+:匹配 1 个以上字母或 '
  • (?::启动非捕获组
    • (?:-| +):匹配 - 或 1+ 个空格
    • [a-zA-Z']+:匹配 1 个以上字母或 '
  • )*:结束非捕获组。重复该组 0 次或多次
  • *:匹配 0 个或多个尾随空格
  • $:结束

关于java - REGEX - 允许多个空格,并且连字符 (-) 前后不能有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73830725/

相关文章:

java - 任务 ':app:compileRetrolambdaDebug' 执行失败

regex - 带后缀的可选命名捕获组

java - 正则表达式 - 替换文本,忽略圆括号中的文本

html - 在 asp.net 中的 2 个并排按钮之间放置空间的最简单方法是什么

javascript - 如何在条件检查期间检查并删除字符串中的多余空格

java - Java 中的像素计数

java - 在 spring boot 中加载上下文配置

java - 在 JDBC for Oracle 中设置客户端信息

c# - 正则表达式——匹配捕获以外的任何内容

python - 从python中的字符串中删除空格