2009年9月6日 星期日

Silverlight 3中規則運算式(Regular Expressions)的支援

在SL3當中,有一個新支援的重要類別,也就是位於System.Text.RegularExpressions命名空間底下的Regex,在RegularExpressions命名空間底下包含了幾個與規則運算式有關的重要類別,而最方便使用的莫過於Regex,使用的方式很簡單:

System.Text.RegularExpressions.Regex.IsMatch(要驗證的文字, 規則式)

其中IsMatch是一個靜態方法,因此我們直接呼叫即可,完整的程式碼可參考底下範例:

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)
Me.TextBox1.Text = "\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"
End Sub

Private Sub Button2_Click(ByVal sender as Object, ByVal e as System.Windows.RoutedEventArgs)
Me.TextBox1.Text = "0\d{2,4}-\d{6,8}"
End Sub

Private Sub Button3_Click(ByVal sender as Object, ByVal e as System.Windows.RoutedEventArgs)
MessageBox.Show(Text.RegularExpressions.Regex.IsMatch(Me.TextBox2.Text, Me.TextBox1.Text))
End Sub

此場景的XAML指令碼如下:

<Grid x:Name="LayoutRoot">
<TextBox x:Name="TextBox1" Height="29" Margin="140,32,270,0" VerticalAlignment="Top" Text="TextBox" TextWrapping="Wrap"/>
<TextBlock Height="30" HorizontalAlignment="Left" Margin="29,32,0,0" VerticalAlignment="Top" Width="111" Text="規則運算式:" TextWrapping="Wrap" FontSize="16"/>
<TextBox x:Name="TextBox2" Height="29" Margin="140,80,270,0" VerticalAlignment="Top" Text="TextBox" TextWrapping="Wrap"/>
<TextBlock Height="30" HorizontalAlignment="Left" Margin="29,80,0,0" VerticalAlignment="Top" Width="111" FontSize="16" Text="規則運算式:" TextWrapping="Wrap"/>
<Button x:Name="Button3" Height="30" HorizontalAlignment="Right" Margin="0,80,180,0" VerticalAlignment="Top" Width="65" Content="驗證" FontSize="16" Click="Button3_Click"/>
<Button x:Name="Button1" Height="30" HorizontalAlignment="Right" Margin="0,32,133,0" VerticalAlignment="Top" Width="112" FontSize="16" Content="範本 - email" Click="Button1_Click"/>
<Button x:Name="Button2" Height="30" HorizontalAlignment="Right" Margin="0,31,18,0" VerticalAlignment="Top" Width="112" FontSize="16" Content="範本 - Mobile" Click="Button2_Click"/>
</Grid>

執行結果如下:

http://blog.studyhost.com/BlogData/20090906/RegexExampleTestPage.html
透過這個內建的方法,我們在SL3當中也可以輕易的針對使用者的輸入進行驗證,相當方便好用。

沒有留言: