首页 > 解决方案 > 文本框正则表达式验证在 uwp 中不起作用

问题描述

这是仅在Windows Community ToolkitUWP 的官方文档中提供的数字自定义正则表达式验证示例,此处为TextBox Regex extensions in toolkit

<StackPanel Margin="10,0,10,0">
    <TextBox Name="PhoneNumberValidator"
             extensions:TextBoxRegex.Regex="^\s*\+?\s*([0-9][\s-]*){9,}$"
             Header="Text box with Regex extension for phone number, validation occurs on TextChanged"
             HeaderTemplate="{StaticResource HeaderTemplate}"
             Style="{StaticResource TextBoxRegexStyle}" />
    <StackPanel Orientation="Horizontal">
        <TextBlock Text="Is Valid: " />
        <TextBlock Text="{Binding (extensions:TextBoxRegex.IsValid), ElementName=PhoneNumberValidator, Converter={StaticResource StringFormatConverter}}" />
    </StackPanel>

</StackPanel>  

它可以工作,但如果我更改正则表达式并使用自定义正则表达式/^(?!\s*$).+/进行NotNullOrEmpty验证,那么它就不起作用。意思ext:TextBoxRegex.IsValid总是返回假。为什么 ?

标签: c#regexuwp

解决方案


我测试了您在 WindowsCommunityToolkit 示例应用程序中提供的正则表达式:

<TextBox extensions:TextBoxRegex.Regex="(?!^$)([^\s])"
         .../>

它工作正常,即输入文本后,它显示结果为True.

请注意,正则表达式本身不包含 first 和 last /,它是一种表示内部是正则表达式的语法。在XML中输入相关的正则表达式时,只需要输入内容即可。

谢谢。


推荐阅读