Goで正規表現が常に失敗するのはなぜですか?

leylandski:

私は彼らの正規表現が失敗する理由を尋ねる質問がたくさんあることを知っていますが、Go / Golangについては特にわかりません。

私はいくつかのメソッドが追加された文字列であるIDタイプを持っています。type ID stringこの関数は、IDが有効な場合にブール値を返すことになっています。

私の有効性の基準は:

  • 長さ20文字。
  • 大文字のAZ。
  • 0〜9の数字。

いくつかの異なるオンラインツールでテストした正規表現は /[A-Z0-9]{20}/

しかし、検証関数を実行するたびに、入力に関係なくfalseが返されます。特に、regexp.MatchString()関数はfalseとnilを返します。

以下は私の検証関数です。20 /.{20}/に一致するはずの正規表現を変更しても、matchは常にfalse です。

func (this ID) validate() bool {

    regexString := "/[A-Z0-9]{" + strconv.Itoa(MAX_ID_LENGTH) + "}/"
    fmt.Println(regexString)

    thisStr := this.ToString()
    fmt.Println(thisStr)
    charCount := utf8.RuneCountInString(thisStr)
    fmt.Println(charCount)
    thisStr = strings.ToUpper(thisStr)
    fmt.Println(thisStr)
    match, err := regexp.MatchString(regexString, thisStr)
    fmt.Println(match, err)

    //Check string length is correct and matches regex.
    if charCount != MAX_ID_LENGTH || !match {
        return false
    } else {
        return true
    }
}

それは私が関数を使用している方法と関係がありますか?私は困惑しています。

注: .ToUpper()関数が存在するのは、IDが生成されるときに、大文字と0-9でのみ生成されるためですが、後日手動で入力した場合、「abc」を「ABC」として処理する必要があります。

JDBはまだモニカを覚えています:

Go正規表現は/文字で囲まないでくださいそれらを削除し、それが機能するかどうかを確認します。

/文字は、作成するときに(JavaScriptやRubyなどの)いくつかの言語で使用されている正規表現リテラルをするので\、文字が正規表現で頻繁に使用されたときに、通常の文字列のエスケープをダブル必要です。これは一部の言語では便利ですが、通常は実際の正規表現構文の一部ではありません(ただし、すべての言語は正規表現を少し異なって処理します)。

Go言語は正規表現リテラルをサポートしていませんが、文字列リテラルの概念を備えているため、複雑な正規表現を簡単に記述できます。

したがって、たとえば、文字列を見つけるには\.hidden-file-009、次のように式を記述します。

"\\\\\\.[a-zA-Z0-9\\-_]*"

または、もっと簡単に:

 `\\\.[a-zA-Z0-9\-_]*`

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

正規表現を使用したRadDataForm検証が常に失敗するのはなぜですか?

分類Dev

失敗するはずなのに、なぜこの正規表現が一致するのですか?

分類Dev

正規表現がBashで常に「true」を返すのはなぜですか?

分類Dev

正規表現が常に真または常に偽であるのはなぜですか

分類Dev

このhtaccess正規表現が3つ以上の期間で失敗するのはなぜですか?

分類Dev

このデータYYYY-MM-DD正規表現がJavaで失敗するのはなぜですか?

分類Dev

私のこの特定の排他的正規表現が失敗するのはなぜですか?

分類Dev

正規表現が常に1を返すのはなぜですか?

分類Dev

この正規表現の一致が失敗するのはなぜですか

分類Dev

この正規表現の単体テストが失敗するのはなぜですか?

分類Dev

範囲のこの正規表現が失敗するのはなぜですか?

分類Dev

この正規表現ロジックが失敗するのはなぜですか?

分類Dev

文字列の検証が失敗するのに、正規表現を使用した行の検証がうまく機能するのはなぜですか?

分類Dev

この正規表現を使用すると、なぜこの関数が失敗するのですか?

分類Dev

正規表現を変数に格納すると、比較テストが失敗するのはなぜですか?(Awk / Gawk)

分類Dev

正規表現がng-patternで逆になるのはなぜですか?

分類Dev

このコード(正規表現を使用したURLからのホスト名の抽出)が失敗するのはなぜですか

分類Dev

正規表現がC ++で機能しないのに、Pythonでは機能するのはなぜですか?

分類Dev

正規表現がXで機能するのに、Yでは機能しないのはなぜですか?

分類Dev

些細な複数行の正規表現は.NETでは失敗しますが、ECMAScriptでは成功します-なぜですか?

分類Dev

正規表現が5-nwwwで反応するのはなぜですか?

分類Dev

JUnitテストの例外が常に失敗するのはなぜですか?

分類Dev

このJavaScript検証が常に失敗するのはなぜですか

分類Dev

Java正規表現が常に失敗する

分類Dev

JavaScriptでグローバル正規表現を反転すると常にtrueが返されるのはなぜですか

分類Dev

Vapor クエリが常に失敗するのはなぜですか?

分類Dev

「tcsetattr(fd、TCSANOW、&cfg)」が常に失敗するのはなぜですか?

分類Dev

正規表現が機能するのに、正規表現での置換が機能しないのはなぜですか?

分類Dev

この正規表現が一致するのはなぜですか?

Related 関連記事

  1. 1

    正規表現を使用したRadDataForm検証が常に失敗するのはなぜですか?

  2. 2

    失敗するはずなのに、なぜこの正規表現が一致するのですか?

  3. 3

    正規表現がBashで常に「true」を返すのはなぜですか?

  4. 4

    正規表現が常に真または常に偽であるのはなぜですか

  5. 5

    このhtaccess正規表現が3つ以上の期間で失敗するのはなぜですか?

  6. 6

    このデータYYYY-MM-DD正規表現がJavaで失敗するのはなぜですか?

  7. 7

    私のこの特定の排他的正規表現が失敗するのはなぜですか?

  8. 8

    正規表現が常に1を返すのはなぜですか?

  9. 9

    この正規表現の一致が失敗するのはなぜですか

  10. 10

    この正規表現の単体テストが失敗するのはなぜですか?

  11. 11

    範囲のこの正規表現が失敗するのはなぜですか?

  12. 12

    この正規表現ロジックが失敗するのはなぜですか?

  13. 13

    文字列の検証が失敗するのに、正規表現を使用した行の検証がうまく機能するのはなぜですか?

  14. 14

    この正規表現を使用すると、なぜこの関数が失敗するのですか?

  15. 15

    正規表現を変数に格納すると、比較テストが失敗するのはなぜですか?(Awk / Gawk)

  16. 16

    正規表現がng-patternで逆になるのはなぜですか?

  17. 17

    このコード(正規表現を使用したURLからのホスト名の抽出)が失敗するのはなぜですか

  18. 18

    正規表現がC ++で機能しないのに、Pythonでは機能するのはなぜですか?

  19. 19

    正規表現がXで機能するのに、Yでは機能しないのはなぜですか?

  20. 20

    些細な複数行の正規表現は.NETでは失敗しますが、ECMAScriptでは成功します-なぜですか?

  21. 21

    正規表現が5-nwwwで反応するのはなぜですか?

  22. 22

    JUnitテストの例外が常に失敗するのはなぜですか?

  23. 23

    このJavaScript検証が常に失敗するのはなぜですか

  24. 24

    Java正規表現が常に失敗する

  25. 25

    JavaScriptでグローバル正規表現を反転すると常にtrueが返されるのはなぜですか

  26. 26

    Vapor クエリが常に失敗するのはなぜですか?

  27. 27

    「tcsetattr(fd、TCSANOW、&cfg)」が常に失敗するのはなぜですか?

  28. 28

    正規表現が機能するのに、正規表現での置換が機能しないのはなぜですか?

  29. 29

    この正規表現が一致するのはなぜですか?

ホットタグ

アーカイブ