【问题标题】:WPF MaskedTextbox and "\" characterWPF MaskedTextbox 和“\”字符
【发布时间】:2017-02-06 11:19:20
【问题描述】:

我正在使用来自this 文章的助手来创建MaskedTextbox,如果我的掩码包含此字符,我对\ 字符有疑问

b:Masking.Mask="^[0-9]{1,4}\_$"

我明白了

'MaskExpression' property was registered as read-only and cannot be modified without an authorization key.

XAML文件中,但我可以启动应用程序,启动后我得到:

Additional information: analyzing "^[0-9]{1,4}\_$" - Unrecognized escape sequence \_.

在:

SetMaskExpression(textBox, new Regex(mask, RegexOptions.Compiled | RegexOptions.IgnorePatternWhitespace));

我也尝试过使用:

\\
\

而不是\,但它给出了相同的结果。我该如何解决这个问题?

【问题讨论】:

  • 为什么要逃避_?使用b:Masking.Mask="^[0-9]{1,4}_$"。还是要匹配文字反斜杠?然后使用"^[0-9]{1,4}\\\\_$"@"^[0-9]{1,4}\\_$"。什么是有效输入?
  • 不清楚您要达到的目标。发生错误是因为您的正则表达式无效。如果你想在正则表达式中包含“\”字符 - 转义它:“^[0-9]{1,4}\_$”
  • 我认为我需要在_之前使用\,我的坏
  • 对不起,您能否提供一个您认为有效的示例字符串? 1_ 有效还是 1\_ 字符串有效?

标签: c# regex wpf xaml


【解决方案1】:

请注意,_(下划线)不被视为正则表达式特殊元字符,不应转义。

b:Masking.Mask="^[0-9]{1,4}_$"

请注意,只有具有特殊含义的特殊正则表达式元字符才应转义。

Character Escapes in the .NET Framework参考:

字符或序列列 (. $ ^ { [ ( | ) * + ? \ - WS) 中包含的字符是特殊的正则表达式语言元素。要在正则表达式中匹配它们,它们必须被转义或包含在positive character group 中。例如,正则表达式\$\d+[$]\d+ 匹配"$1200"

字符或序列列中列出的字符以外的字符在正则表达式中没有特殊含义;他们匹配自己。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-07
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    相关资源
    最近更新 更多