regex - 正则表达式忽略带重复磅的字符串 (#)
问题描述
我需要一个如下所示的正则表达式。
输入字符串:
####
####white-space
Test#
Test#white-space
输出:
#### - invalid
####white-space - invalid
Test### - invalid
Test-Test###white-space - invalid
Test-Test# - valid
Test#white-space - valid
正则表达式应匹配以# 或#[:space] 或#white-space 结尾的字符串,但不应匹配以重复# 或####white-space 结尾的字符串。
我有这样的事情(https://regexr.com/3orvv):
^\s*\w*\S*(?:(#)(?!\1))\s?$
但它没有按预期工作。
解决方案
如果我正确理解了要求,您可以使用这个正则表达式:
^(?!.*#{2}\s*$).*#\s*$
(?!.*#{2}\s*$)
断言我们没有 2 或更多#
后跟可选空格在行尾是一个否定的前瞻。.*#\s*$
匹配#
最后跟 0 个或多个空格的 a。
推荐阅读
- amazon-web-services - 从 CloudFormation 模板生成代码(java、python 等)
- powershell-3.0 - 使用变量名输出多个文件的函数
- node.js - No'Access-Control-Allow-Origin
- three.js - THREE.js 正交相机位置在 *dolly* 使用 OrbitControl 后未更新
- xamarin - MultiDex:启用 MultiDex 时超出主 Dex 容量
- dart - 带有项目的地图中的返回语句:在 Flutter DropdownButton 中,为什么以及如何工作
- sql-server - 对连接到 Azure SQL Server 的“建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误”进行故障排除
- git - Git Rebase 还是 Squash?
- node.js - 错误 [ERR_STREAM_DESTROYED]:流被销毁后无法调用 write
- javascript - 在记忆游戏中反应参考