验证总结

长度验证

    ''' <summary>
    ''' 文字列の桁数(Shift-JISでのバイト数)を取得する。
    ''' </summary>
    ''' <param name="s">入力された文字列。</param>
    ''' <returns>文字列の桁数</returns>
    ''' <remarks></remarks>
    Public Shared Function GetLength(ByVal s As String) As Integer
        If Not IsInput(s) Then
            Return 0
        End If

        Return CRGaugeCode.DefaultEncoding.GetByteCount(s)
    End Function
'名称の桁数チェック
        If (GetLength(newName) > maxNameLength) Then
            Return False
        End If

-----------------------------------------------------------------------------------------------

整数


    Public Shared Function IsInteger(ByVal s As String) As Boolean

        If Not IsInput(s) Then
            Return True
        End If

        'カンマ区切りに対応するため、Decimalでチェックする
        If s.Contains("."c) Then
            Return False
        End If
        Dim d As Decimal
        If Not Decimal.TryParse(s, d) Then
            Return False
        End If

        Return CDec(Integer.MinValue) <= d And d <= CDec(Integer.MaxValue)

    End Function

-----------------------------------------------------------------------------------------------------

数字

    ''' <summary>
    ''' 数値チェックの結果を表すEnum。
    ''' </summary>
    ''' <remarks></remarks>
    Public Enum NumericCheckCode
        Empty = 0       '未入力
        Numeric = 1     '数値(または整数値)
        NotNumeric = 2  '非数値(または非整数値)
        Overflow = 3    '範囲外の数値
    End Enum

    ''' <summary>
    ''' 文字列がDouble型で表せる整数値かどうかを判定する。
    ''' </summary>
    ''' <param name="s">入力された文字列。</param>
    ''' <returns>文字列が数値か否かを列挙型で返す。 未入力/整数値/非整数値/オーバーフロー</returns>
    ''' <remarks></remarks>
    Public Shared Function IsIntegralDouble(ByVal s As String) As NumericCheckCode

        If Not IsInput(s) Then
            Return NumericCheckCode.Empty
        End If

        Try
            Dim d As Double = Double.Parse(s)
            If Double.IsNaN(d) Or Double.IsInfinity(d) Then
                '変換は成功したが、非数や無限大の場合
                Return NumericCheckCode.NotNumeric
            ElseIf Math.Truncate(d) = d Then
                '整数値の場合
                Return NumericCheckCode.Numeric
            Else
                '小数値の場合
                Return NumericCheckCode.NotNumeric
            End If
        Catch ex As FormatException
            'フォーマットエラー
            Return NumericCheckCode.NotNumeric
        Catch ex As OverflowException
            'オーバーフロー
            Return NumericCheckCode.Overflow
        End Try

    End Function

-----------------------------------------------------------------------------------------

日期格式

    '区切り文字無しの日付の形式
    Private Const DATE_PATTERN As String = "yyyyMM"
    '区切り文字有りの日付の形式
    Private Const DELIMITED_DATE_PATTERN As String = "yyyy/M"
    '日付の最小値
    Private Shared ReadOnly minDate As New DateTime(1900, 1, 1)
    '日付の最大値
    Private Shared ReadOnly maxDate As New DateTime(2999, 12, 31)

s="201502"

pattern="yyyyMM"

        If Not Date.TryParseExact(s, pattern, CultureInfo.CurrentCulture, DateTimeStyles.None, d) Then
            Return False
        End If

-----------------------------------------------------------------------------------------------------------
合法文件名

http://dobon.net/vb/dotnet/string/regexismatch.html#filepath

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值