如何在WPF中验证RichTextbox?

时间:2015-06-09 10:54:54

标签: wpf richtextbox

如何在WPF中验证RichTextbox?我想验证电子邮件和电子邮件分隔符的文本,即应使用分号输入电子邮件。

的Xaml:

              <StackPanel Orientation="Horizontal">                     
                <RichTextBox x:Name="txtEmail" Style="{StaticResource ContentRichTextBox}"
                             ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto" Margin="0,0,10,0">
                    <FlowDocument>
                        <Paragraph LineHeight="5"></Paragraph>
                    </FlowDocument >
                </RichTextBox>
            </StackPanel>
            <StackPanel HorizontalAlignment="Center">
                <TextBlock x:Name="txterrormessage" Width="300" Foreground="#FFE5572C" FontSize="14" Visibility="Hidden" TextWrapping="Wrap"></TextBlock>
            </StackPanel>
            <StackPanel HorizontalAlignment="Center" Margin="60,0,0,0">
                <Button x:Name="BtnEmail" Style="{StaticResource ShortButtonStyle}" Content="NEXT" Margin="10" Command="{Binding CommandChanged}" CommandParameter="PROJECTS" Click="BtnEmail_Click"/>
            </StackPanel>

这是我的代码:

private void BtnEmail_Click(object sender, RoutedEventArgs e)
    {
        string richText = new TextRange(txtEmail.Document.ContentStart, txtEmail.Document.ContentEnd).Text;

        if (!Regex.IsMatch(richText, @"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"))
        {
            txterrormessage.Text = "Enter a valid email";
            txterrormessage.Visibility = System.Windows.Visibility.Visible;
        }
        else
        {
            txterrormessage.Visibility = System.Windows.Visibility.Hidden;
        }

        if (!Regex.IsMatch(richText, @"^((\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)\s*[;]{0,1}\s*)+$"))
        {
            txterrormessage.Text = "Separate emails with ;";
            txterrormessage.Visibility = System.Windows.Visibility.Visible;
        }
}

代码似乎不起作用....如何验证?

由于

2 个答案:

答案 0 :(得分:1)

在验证前格式化您的Activity 2

richText

修改

这是整个方法,可能你正在寻找:

richText = Regex.Replace(richText, @"(\n|\r)", "", RegexOptions.Multiline);

答案 1 :(得分:1)

我见过的最简单的方法是

    private void OnVerifyEmail()
    { 
       var recipients = richText.Split(';', StringSplitOptions.RemoveEmptyEntries);
       var validator = new System.ComponentModel.DataAnnotations.EmailAddressAttribute();
       foreach (var recipient in recipients)
       {
          var isValid = validator.IsValid(recipient.Trim());
          if(!isValid)
          {
             // do your thing here
          }
       }
    }