首页 > 解决方案 > 如何编写多正则表达式行?

问题描述

我正在尝试编写一行执行以下操作的正则表达式:

一个字符串变量,只能包含:

尝试通过许多正则表达式网站搜索

.matches("([a-zA-Z_0-9']*(\\s)?)(-)?"))

这允许接近我想要的,但是在你输入空格字符后你不能再开始输入 az 了。所以它在某种程度上是连续的。我希望验证允许这些因素的任何序列。

预期:
允许在整个字符串的任何位置键入具有任意数量的 a-zA-Z、零到一个空格、零到一个破折号的字符串。

标签: javaregexvalidation

解决方案


这是对此的验证

"^(?!.*\\s.*\\s)(?!.*'.*')[a-zA-Z'\\s-]*$"

展开

 ^                      # Begin
 (?! .* \s .* \s )      # Max single whitespace
 (?! .* ' .* ' )        # Max single, single quote
 [a-zA-Z'\s-]*          # Optional a-z, A-Z, ', whitespace or - characters
 $                      # End

推荐阅读