2

入力で:

"a[href*=\"test\"]"

次のjQueryセレクターからタグ名を一致させようとしています:

Regex r = new Regex("^[A-z]+");
string tagName = r.Match("a[href*=\"test\"]").Value;

問題は、A から z までではなく、左ブラケットを収集することです。

tagName = "a[href"

式で指定されていない場合、ブラケットを収集するのはなぜですか?

4

2 に答える 2

10

これだからね

[A-z]

ASCII 'A' から ASCII 'z' までの文字範囲を作成します。Z と a の間に文字以外の文字があり、そのうちの 1 つが[文字です。代わりに使用してください:

[A-Za-z]

からの範囲A-Z からの範囲を一致させますa-zが、その間にある文字は一致させません。詳細を確認するためにASCII テーブルを見ることができますが、要約すると、文字は (数字の ASCII 順で) 次のようになります。

A, B, ..., Y, Z, [, \, ], ^, _, `, a, b, c, ..., z
于 2012-06-01T16:25:32.747 に答える
-1

このようなものをテストするには、regexpal のようなツールを試す必要があります。これがあなたの例です:

http://regexpal.com/?flags=g®ex= ^%5BA-z%5D%2B&input=a%5Bhref*%3D%5C%22test%5C%22%5D

私にとって奇妙なのは、小文字の「z」です。何らかの理由で、ブラケットが通過できるようになっています。

これを試して:

^[^\[]+

http://regexpal.com/?flags=g®ex= ^%5B^%5C%5B%5D%2B&input=a%5Bhref*%3D%5C%22test%5C%22%5D

于 2012-06-01T16:27:29.057 に答える