0

私の要件に従って、正規表現を使用して 3 つの条件をチェックする必要があります。

'ドット位置を求める

 dotPos = InStr(editFormat, ".")

'整数の桁数を求める

 wholeNum = Left$(editFormat, dotPos - 1)

'10 進数の桁数を求める

decNum = Mid(editFormat, dotPos + 1, strLen - dotPos - 1)

regularExp = "^[-]{0,1}[0-9]{0," & wholeNum & "}\" & DecSep & "[0-9]{0," & decNum & "}$"

ここで、検証する必要があります

1) 全体の値 (ドットの前)

2) 10 進値 (ドットの後)

3) 入力の全長。

wholeNum = 30

decNum  = 20

例: 値は 123456789012345678901234567890.12345678901234567890 です。

私のコードによると、この 2 つの条件は正常に機能しています。

しかし、もう 1 つの条件を追加する必要があります。全長は 40 にする必要があります。

例: あなたの例の可能な入力: ( (30.10) または (20.20) または (25.15) )

1) 123456789012345678901234567890.1234567890 (合計 40)

2) 12345678901234567890.12345678901234567890

3) 1234567890123456789012345.678901234567890

コードにその条件を追加する方法。

ありがとう。

4

1 に答える 1

0

私は先読みアサーションを使用します:

regularExp = "^" & "(?=.{40}$)" & "[-]{0,1}[0-9]{0," & wholeNum & "}\" & DecSep & "[0-9]{0," & decNum & "}$"

ドットを含めて数えていると仮定します。

于 2013-10-29T10:43:15.517 に答える