1

我想使用正则表达式验证 C# TextBox 中的输入。预期的输入格式如下: CCCCC-CCCCC-CCCCC-CCCCC-CCCCC-CCCCC-C

所以我有六个元素,五个分隔字符,最后一个分隔字符。

现在我的正则表达式匹配 5 到 255 个字符之间的任何字符:.{5,255}

我需要如何修改它以匹配上述格式?

4

4 回答 4

3

更新: -

如果要匹配任何字符,则可以使用:-

^(?:[a-zA-Z0-9]{5}-){6}[a-zA-Z0-9]$

解释: -

(?:                // Non-capturing group
    [a-zA-Z0-9]{5} // Match any character or digit of length 5
    -              // Followed by a `-`
){6}               // Match the pattern 6 times (ABCD4-) -> 6 times
[a-zA-Z0-9]        // At the end match any character or digit.

注意:-下面的正则表达式只会匹配您发布的模式:-

CCCCC-CCCCC-CCCCC-CCCCC-CCCCC-CCCCC-C

你可以试试这个正则表达式: -

^(?:([a-zA-Z0-9])\1{4}-){6}\1$

解释: -

(?:                // Non-capturing group
  (                // First capture group
    [a-zA-Z0-9]    // Match any character or digit, and capture in group 1
  )
  \1{4}            // Match the same character as in group 1 - 4 times
  -                // Followed by a `-`
){6}               // Match the pattern 6 times (CCCCC-) -> 6 times
\1                 // At the end match a single character.
于 2012-12-22T15:56:10.273 回答
1

未经测试,但我认为这会起作用:

([A-Za-z0-9]{5}-){6}[A-Za-z0-9]
于 2012-12-22T15:55:49.167 回答
1

对于您的示例,通常替换C为您想要的字符类:

^(C{5}-){6}C$

^([a-z]{5}-){6}[a-z]$        # Just letter, use case insensitive modifier 

^([a-z0-9]{5}-){6}[a-z0-9]$  # Letters and digits..
于 2012-12-22T15:56:30.557 回答
0

试试这个:

^(C{5}-){6}C$

^和分别表示字符串的$开头和结尾,并确保没有输入其他字符。

于 2012-12-22T15:59:54.487 回答