0

私は正規表現にあまり詳しくないので、助けが必要です。jQuery正規表現の一致が発生したときに、コード内の識別されたポイントで中断する dynacloud プラグインを使用しています。この正規表現が何に一致するかを理解するのを手伝ってくれる人が必要です

/^[a-z\xE4\xF6\xFC]*[A-Z\xC4\xD6\xDC]([A-Z\xC4\xD6\xDC\xDF]+|[a-z\xE4\xF6\xFC\xDF]{3,}

助けてください!!

4

5 に答える 5

1

Expressoをご覧になることをお勧めします。閉じ括弧を忘れた場合、結果は次のようになります。

ここに画像の説明を入力

于 2012-08-14T09:34:03.913 に答える
1

\x**基本的に取得したものを置き換えると、パーツは特別なキャラクターに変換されます。

/^[a-zäöü]*[A-ZÄÖÜ]([A-ZÄÖÜß]+|[a-zäöüß]{3,})/

私はあなたのためにそれを分解します:

^文字列の先頭

[a-zäöü]characterset: a から z までの任意の文字または äöü *0 回以上

[A-ZÄÖÜ]characterset: A から Z または ÄÖÜ までの任意の文字を 1 回だけ

(グループの開始

[A-ZÄÖÜß]別の文字セット、今すぐ入手する必要があります:) +1回以上

|また

[a-zäöüß]文字セット、{3,}3 回以上

)グループの終わり

)/また、最後にa を逃し/ました。最初と最後にある は、その間にあるものは正規表現であることを意味します。

于 2012-08-14T09:36:28.923 に答える
1

^行頭

[...]可能な文字のクラス

a-z範囲 (abcde...yz)

\xE4char (「ascii」コード) の 16 進値。

{n,m}n 回と m 回の間。

*{0,} に相当

+{1,} に相当

于 2012-08-14T09:35:57.423 に答える
0

これがあなたの正規表現であると仮定します:

/^[a-z\xE4\xF6\xFC]*[A-Z\xC4\xD6\xDC]([A-Z\xC4\xD6\xDC\xDF]+|[a-z\xE4\xF6\xFC\xDF]{3,})/

以下は、正規表現の説明です。

"^" +                              // Assert position at the beginning of a line (at beginning of the string or after a line break character)
"[a-z\xE4\xF6\xFC]" +              // Match a single character present in the list below
                                      // A character in the range between “a” and “z”
                                      // ASCII character 0xE4 (228 decimal)
                                      // ASCII character 0xF6 (246 decimal)
                                      // ASCII character 0xFC (252 decimal)
   "*" +                              // Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
"[A-Z\xC4\xD6\xDC]" +              // Match a single character present in the list below
                                      // A character in the range between “A” and “Z”
                                      // ASCII character 0xC4 (196 decimal)
                                      // ASCII character 0xD6 (214 decimal)
                                      // ASCII character 0xDC (220 decimal)
"(" +                              // Match the regular expression below and capture its match into backreference number 1
                                      // Match either the regular expression below (attempting the next alternative only if this one fails)
      "[A-Z\xC4\xD6\xDC\xDF]" +          // Match a single character present in the list below
                                            // A character in the range between “A” and “Z”
                                            // ASCII character 0xC4 (196 decimal)
                                            // ASCII character 0xD6 (214 decimal)
                                            // ASCII character 0xDC (220 decimal)
                                            // ASCII character 0xDF (223 decimal)
         "+" +                              // Between one and unlimited times, as many times as possible, giving back as needed (greedy)
   "|" +                              // Or match regular expression number 2 below (the entire group fails if this one fails to match)
      "[a-z\xE4\xF6\xFC\xDF]" +          // Match a single character present in the list below
                                            // A character in the range between “a” and “z”
                                            // ASCII character 0xE4 (228 decimal)
                                            // ASCII character 0xF6 (246 decimal)
                                            // ASCII character 0xFC (252 decimal)
                                            // ASCII character 0xDF (223 decimal)
         "{3,}" +                           // Between 3 and unlimited times, as many times as possible, giving back as needed (greedy)
")"  
于 2012-08-14T12:18:27.163 に答える
0

)/正規表現に欠けているのは、カットアンドペーストのエラーに過ぎないと思います。DynaCloud ソース コードに含まれています。存在しないのは、エンド アンカー ( $) です。これは驚くべきことです。関連するコードは次のとおりです。

var elems = jQuery(this).text()
            .replace(/[^A-Z\xC4\xD6\xDCa-z\xE4\xF6\xFC\xDF0-9_]/g, ' ')
            .replace(jQuery.dynaCloud.stopwords, ' ')
            .split(' ');
var word = 
  /^[a-z\xE4\xF6\xFC]*[A-Z\xC4\xD6\xDC]([A-Z\xC4\xD6\xDC\xDF]+|[a-z\xE4\xF6\xFC\xDF]{3,})/;

最初のステートメントは不要な文字を除外しますが、数字とアンダースコアはそのままにします。2 番目のステートメントは、ASCII 文字と (たとえば) ドイツ語で使用されるいくつかの非 ASCII 文字で構成される単語の一致を試みます。ただし、一致する文字がなくなったら、最初の正規表現にリストされている文字だけでなく、任意の文字との一致を自由に続けることができます。また、単語に数字やアンダースコアが含まれていると、単語が 2 つ以上の単語に分割されます。

次のように、最後に正規表現を固定し、数字とアンダースコアのサポートを追加してみます。

/^[a-z\xE4\xF6\xFC]*[A-Z\xC4\xD6\xDC]([A-Z\xC4\xD6\xDC\xDF0-9_]+|[a-z\xE4\xF6\xFC\xDF0-9_]{3,})$/g

この正規表現は説明のみを目的としています。解決を意図したものではありません。1 つには、数字とアンダースコアの位置を大雑把に推測しました。別の理由として、数字とアンダースコアで終わる単語を照合できるようになりましたが、それは望ましくないかもしれません。

于 2012-08-14T12:47:18.420 に答える