我需要建立正则表达式匹配以下字符串:无法使用正则表达式与“?”匹配字符串
- CCN
- CreditCardNum
- CreditCardNUmber
- CCNumber
等
我建造它,如下所示: C(redit)?C(ard)?N(um|umber)?
它不匹配“CreditCardNumber”字符串。
我也试过:C(redit)?C(ard)?N(:?um|umber)
没有成功
我需要建立正则表达式匹配以下字符串:无法使用正则表达式与“?”匹配字符串
等
我建造它,如下所示: C(redit)?C(ard)?N(um|umber)?
它不匹配“CreditCardNumber”字符串。
我也试过:C(redit)?C(ard)?N(:?um|umber)
没有成功
你的模式好,你需要补充的是:(?i)
在开始时
或IGNORECASE在正则表达式的选项。 RegexOptions.IgnoreCase
注:因为你不需要捕获“REDIT”或“ARD”,非捕获组(?:...)
更好:
(?i)C(?:redit)?C(?:ard)?N(?:um(?:ber)?)?
如果你想拥有与案件更多的控制:
C(?i:redit)?C(?i:ard)?N(?i:um(?:ber)?)?
为了增强安全性,你可以在开始时并在图案\b
尝试的末尾添加单词边界
(?i)C(?:redit)?C(?:ard)?N(?:um(?:ber)?)?
(?i)
是让你的正则表达式不区分大小写。
你可以使用'RegexOptions.ExplicitCapture' /'(?n)',而不是用'(?:)'搞乱正则表达式。 '(?in)C(redit)?C(ard)?N(um(ber)?) – Athari
@Athari:的确,但您放弃了同时使用内联修饰符的灵活性。 –