java - 如何编写多正则表达式行?
问题描述
我正在尝试编写一行执行以下操作的正则表达式:
一个字符串变量,只能包含:
- 字母 a 到 z(大写和小写)(零次或多次)
- 连字符(零次或多次)
- 单引号字符(零次或一次)
- 空格字符(零次或一次)
尝试通过许多正则表达式网站搜索
.matches("([a-zA-Z_0-9']*(\\s)?)(-)?"))
这允许接近我想要的,但是在你输入空格字符后你不能再开始输入 az 了。所以它在某种程度上是连续的。我希望验证允许这些因素的任何序列。
预期:
允许在整个字符串的任何位置键入具有任意数量的 a-zA-Z、零到一个空格、零到一个破折号的字符串。
解决方案
这是对此的验证
"^(?!.*\\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
推荐阅读
- html - 如何在选中不同的复选框时禁用复选框和文本区域的集合?
- glsl - 法线贴图未正确应用
- javascript - 将 req.body 转换为数组
- java - 像这样转换为 DTO 是否可以,或者这是一种不好的做法?
- json - json 模式验证:对值的条件依赖
- docker - 无法将 Visual Studio 代码附加到 Docker 容器
- python - 用字母替换数字并提供所有排列
- sql-server - 如何比较T-SQL代码和SSMS,有没有功能?
- google-cloud-firestore - Firestore如何按时间顺序查询文档
- design-patterns - 使用 CQRS 收集创建/编辑页面所需的数据