2

输入:

"a[href*=\"测试\"]"

我正在尝试从以下 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之间还有字母以外的字符,其中之一就是[字符。改用:

[A-Za-z]

匹配范围 fromA-Z 范围 from 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 回答