私は正規表現にあまり詳しくないので、助けが必要です。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,}
助けてください!!
私は正規表現にあまり詳しくないので、助けが必要です。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,}
助けてください!!
Expressoをご覧になることをお勧めします。閉じ括弧を忘れた場合、結果は次のようになります。
\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 を逃し/
ました。最初と最後にある は、その間にあるものは正規表現であることを意味します。
^
行頭
[...]
可能な文字のクラス
a-z
範囲 (abcde...yz)
\xE4
char (「ascii」コード) の 16 進値。
{n,m}
n 回と m 回の間。
*
{0,} に相当
+
{1,} に相当
これがあなたの正規表現であると仮定します:
/^[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)
")"
)/
正規表現に欠けているのは、カットアンドペーストのエラーに過ぎないと思います。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 つには、数字とアンダースコアの位置を大雑把に推測しました。別の理由として、数字とアンダースコアで終わる単語を照合できるようになりましたが、それは望ましくないかもしれません。