为了账号安全,请及时绑定邮箱和手机立即绑定

C# RegEx 匹配特定字符串

C# RegEx 匹配特定字符串

C#
萧十郎 2021-11-21 10:03:13
我需要匹配(使用正则表达式)可以是这样的字符串:必需:custodian_{number 1 - 9}_{fieldType txt 或 ssn} 可选:_{fieldLength 1-999}例如: custodian_1_ssn_1 有效 custodian_1_ssn_1_255 有效custodian 或 custodian_ 或 custodian_1 或 custodian_1_ 或 custodian_1_ssn 或 custodian_1_ssn_ 或 custodian_1_ssn_1_ 无效目前我正在处理这个:(?:custodian|signer)_[1-9]?[0-9]_(?:txt|ssn)_[1-9][0-9]?(_[1-9]?[0-9]?[0-9]?)?因为我的正则表达式和我的 api 正在努力接受:custodian_1_txt_1 custodian_1_ssn_1 custodian_1_txt_1_25 5 <---- 与最后一个“5”不匹配有什么想法吗?
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

您可以使用模式:

^custodian(?:_[a-z0-9]+)+$
  • ^ 断言位置行首。

  • custodian匹配文字子字符串custodian

  • (?:_[a-z0-9]+)+非捕获组。_后跟字母数字的多个序列。

  • $ 断言位置行尾。

您可以在此处检查正确的匹配项。

显然,您可以修改模式以signer在非捕获组中添加子字符串:

^(?:custodian|signer)(?:_[a-z0-9]+)+$.


查看完整回答
反对 回复 2021-11-21
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

我建议使用\d不是你的数字,这是我的代码试试看:-

(?:custodian|signer)_[1-9]?[0-9]_(?:txt|ssn)_[1-9][0-9]?(_[1-9]?\d*)?

我只是\d在模式的末尾添加了一个值,以在另一个匹配之前匹配所有结束数字。


查看完整回答
反对 回复 2021-11-21
?
MM们

TA贡献1886条经验 获得超2个赞

如果您只对最后一位数字感兴趣,这个超级通用的正则表达式可以:

(?:.+)_(\d+)

如果您确实需要匹配整个字符串,则可以这样做:

^(?:custodian|signer)_\d+_(?:txt|ssn)(?:_\d+)?_(\d+)$


查看完整回答
反对 回复 2021-11-21
  • 3 回答
  • 0 关注
  • 494 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信