c# - 寻找特定的正则表达式

标签 c# regex

我一直在寻求为我的具体情况创建一个正则表达式。我对 Regex 的了解有限,通过在 StackOverflow 上搜索得到的最远的是这个 Regex:

^[pP][a-zA-Z0-9- ]*

我正在寻找一个强制字符串为:

  • 以字母 'p' 或 'P' 开头,小写和大写
  • 不少于19个字符
  • 可能包含“-”、“%20”、“”或“+”
  • 以'0000'结尾
  • 在“p”和四个零以及“-”、“%20”、“”或“+”分隔符之间为字母数字

应该匹配正则表达式的字符串示例:

  • PLX000000000PQ50000
  • pLX000000000PQ50000
  • plx000000000pq50000
  • PLX-0000-0000-0PQ5-0000
  • PLX-0000-0000-0PQ50000
  • PLX+0000+0000+0PQ5+0000
  • PLX%200000%200000%200PQ5%200000
  • PLX 0000 0000 0PQ5 0000

我正在寻找的正则表达式是什么? 我使用的语言是 C#

最佳答案

添加到@Zenoo 的回答中,如果您想将 %20 视为单次出现,您可以使用以下表达式:

[pP]([a-zA-Z0-9 +-]|(%20)){14,}0000

您基本上将 %20 作为单个事件添加到可能的字符列表中。

Here is the live demo , 你可以用它来测试你想要的所有例子(我已经包括了你提供的那些),以及所有需要的技术解释,我在下面复制:

  • pP 匹配列表 pP 中的单个字符(区分大小写)
  • 第一个捕获组 ([a-zA-Z0-9 +-]|(%20)){14,} {14,} 量词 — 匹配次数在 13 到无限次之间,尽可能多, 根据需要回馈(贪婪)
  • 1st Alternative [a-zA-Z0-9 +-] 匹配出现在 下面的列表 [a-zA-Z0-9 +-] a-z 范围内的单个字符 在 a(索引 97)和 z(索引 122)之间(区分大小写)
  • A-Z 介于 A(索引 65)和 Z(索引 90) (区分大小写) 0-9 0之间范围内的单个字符 (索引 48)和 9(索引 57)(区分大小写)
  • +- 匹配列表中的单个字符 +- (区分大小写)
  • 第二个备选方案 (%20) 第二个捕获组 (%20) %20 与 %20 个字符(区分大小写)
  • 0000 匹配字符 字面上的 0000(区分大小写)

关于c# - 寻找特定的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48784052/

相关文章:

c# 将包含 HTML 特殊字符的字符串解析为 XElement

c# - 验证所有值

通过 IPCONFIG 的 DNS 服务器正则表达式

regex - 为什么正则表达式引擎不回溯 .*?

c# - 在 UserControl 中居中标签

javascript - 我的按钮 id 在 javascript 中调用时有效,但 onserverclick 事件无法在 sql 上存储和更新数据

c# - 如何优化 Entity Framework 的添加/附加调用? (多对多插入)

php - Javascript 正则表达式到 PHP

java - 如何使用正则表达式解析字符串

regex - 如何不捕获vim中的搜索和替换