regex - 正则表达式:匹配除数字、空格、逗号、分号、'am' 和 'pm' 之外的任何内容
问题描述
我正在尝试检查传入的字符串是否包含与定义时间段无关的任何符号,因此我试图找到一个匹配除数字、空格、逗号、分号、“am”和“pm”之外的任何内容的正则表达式.
这就是我的想法,但这仍然匹配 am 和 pm:/([^,:-\d\s])+/
如何添加am
和pm
例外?
不幸的是,谷歌搜索没有帮助。这是带有上述表达式的正则表达式的链接和要测试的文本:https ://regexr.com/5ber7
解决方案
您可以使用
(?:(?![ap]m)[^,:\d\s-])+(?<![ap]m)
查看正则表达式演示
它之所以有效,是因为排除的字符串只有两个字符长。详情:
(?:(?![ap]m)[^,:\d\s-])+
- 一个或多个字符,而不是数字,
、、、:
空格,并且-
不开始一个am
或pm
字符序列(?<![ap]m)
-在当前位置之前不允许am
或允许。pm
推荐阅读
- karate - 使用 karate.forEach 和 karate.set 从 json 数组中提取值的索引
- javascript - Firebase 网络将聊天存储为实时数据库中的数组
- java - 为什么eclipse不在方法参数中使用菱形运算符
- python - 将具有嵌套列表的列转换为以第一个元素作为列名的列
- java - Netflix Eureka 错误:com.netflix.discovery.shared.transport.TransportException:无法在任何已知服务器上执行请求
- javascript - 如何获得“未过滤”的数组项?
- visual-studio-code - 如何在 vscode 语法中的范围匹配后隔离尾随文本的范围
- exception - 在 Kotlin 中指示方法不会引发异常的注解
- regex - 使用正则表达式显示重复字符串
- javascript - 如何使用 vuetify 向下滚动到页面底部