对于使用正则表达式进行名称验证,我需要满足以下要求。
- 只能包含字母、空格、撇号 (') 和连字符 (-)
- 字符之间允许有多个空格(例如:“asd asd asd asd ”)
- 连字符 (-) 前后不能有空格(例如:允许使用“abc-abc”,不允许使用“abc -abc”和“abc- abc”)
我目前正在使用这个正则表达式:
(^[a-zA-Z' ]+(?:[- ][a-zA-Z']+)*$
此正则表达式满足所有要求,但连字符前允许有空格。
如何在连字符之前不允许有空格,也满足此处的所有其他要求?
最佳答案
您可以使用此正则表达式:
^ *[a-zA-Z']+(?:(?:-| +)[a-zA-Z']+)* *$
正则表达式分解:
^
:开始*
:匹配 0 个或多个前导空格[a-zA-Z']+
:匹配 1 个以上字母或'
(?:
:启动非捕获组(?:-| +)
:匹配-
或 1+ 个空格[a-zA-Z']+
:匹配 1 个以上字母或'
)*
:结束非捕获组。重复该组 0 次或多次*
:匹配 0 个或多个尾随空格$
:结束
关于java - REGEX - 允许多个空格,并且连字符 (-) 前后不能有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73830725/