只有当组的长度与指定的长度完全一致时,是否有返回组的方法
本文关键字:返回 方法 是否 | 更新日期: 2023-09-27 18:21:59
以下正则表达式
('d{3,4})
匹配中的1234
123456
,但由于123456
比4长,我不希望正则表达式与任何内容匹配。
这是我单独使用的3个正则表达式,我尝试将它们组合,但它返回了2个以上的组,我最多只需要2个。
//Match card number before security code
(?<!'d)('d{13,16})(?!'d)[<""'].*?(?=[>""']'d{3,4}[<""'])[>""'](?<!'d)('d{3,4})(?!'d)[<""']
//Match card number after security code
(?<!'d)('d{3,4})(?!'d)[<""'].*?(?=[>""']'d{13,16}[<""'])[>""'](?<!'d)('d{13,16})(?!'d)[<""']
//Match just card number
(?<!'d)('d{13,16})(?!'d)
是
(?<!'d)('d{3,4})(?!'d)
应该做到这一点。由于?<!
和?!
断言是零宽度,因此它们实际上并不匹配任何内容(它们只是根据当前位置的输入检查解析状态)。所以你也可以说
((?<!'d)'d{3,4}(?!'d))
如果你愿意的话。
请参阅http://www.regular-expressions.info/refadv.html
(?!regex)
零宽度负前瞻。与正向前瞻相同,只是只有当前瞻中的正则表达式不匹配时,整体匹配才会成功。
使用''b标记字符串的开始和结束,a la
''b''d{3,4}''b
试试这个:('b'd{3,4}'b)
'b
字符表示单词边界。如果您只想要任何非数字字符,请尝试'D('d{3,4})'D