regex - Javascript 正则表达式匹配字符串,仅出现一次 __ 字符
问题描述
我正在努力使用一些正则表达式来匹配我需要的字符串。这是我到目前为止所拥有的,但它比我想要的要匹配:
(\w*__c|\w*__r|[a-zA-Z0-9]*)\.\w*__c|\w*__c
以下是我想要匹配/不匹配的一些示例:
FFX_GLAAssetDisposalID__c => TRUE
FAM__Asset_Sub_Group__r.PNL_On_Asset_Disposal_GL_Account__c => TRUE
Product2.SalesRevenueAccount__c => TRUE
ffbext__codabecashmatchingreport => FALSE
Product2.c2g__CODASalesRevenueAccount__c => FALSE
其中项目由 . 分隔。重要的是 __ 之后的部分中的数量。其中不能超过一组__。我也尝试过负前瞻,但无济于事。
解决方案
你应该记住\w
匹配字母、数字和下划线。为了能够控制下划线的数量,需要使用[^\W_]
字符类,即\w
减去下划线。
您可以使用
\b(?:\w+\.)?[^\W_]+(?:_[^\W_]+)*__c\b
查看正则表达式演示
细节
\b
- 单词边界(?:\w+\.)?
- 1+ 字母/数字/下划线的可选序列,然后是.
[^\W_]+
- 一个或多个字母或数字(?:_[^\W_]+)*
- 零个或多个序列,_
然后是一个或多个字母/数字__c
- 一个__c
字符串\b
- 单词边界
推荐阅读
- java - 设置操作的优先级。计算器应用
- java - 按每行的平均值对二维数组进行排序
- javascript - 如何自定义 HTML DATE 输入.. 除了 jQuery datePicker 之外还有哪些选项?
- python-3.x - Julia 是否需要矢量化来加快计算速度?
- python - 如何使用 Python ping java 和基岩 Minecraft 服务器的信息
- arrays - 打字稿映射类型意外值签名
- python - python Opencv2 显示图像并同时调用其他函数
- node.js - 无法连接到mysql远程数据库
- vba - 在 VBA Excel 中使用 Selenium 隐藏 Edge 浏览器
- java - 使用休眠将一行插入数据库,我将“1”和空值放入数据库而不是用户输入的值