正确的时候匹配括号不应该

时间:2012-06-01 16:23:06

标签: c# javascript regex tags

输入:

  

“一个[HREF * = \” 测试\ “]”

我正在尝试匹配以下jQuery选择器中的标记名称:

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

问题是它收集左括号而不是A到z:

  

tagName =“a [href”

如果未在表达式中指定括号,为什么会收集括号?

2 个答案:

答案 0 :(得分:10)

这是因为这个

[A-z]

创建从ASCII“A”到ASCII“z”的字符范围。 Z和a之间有字母以外的字符,其中一个是[字符。改为使用:

[A-Za-z]

要匹配A-Z 范围a-z的范围,而不是介于它们之间的字符。您可以查看ASCII table以查看具体内容,但摘要是字符(按其ASCII数字顺序排列)如下所示:

A, B, ..., Y, Z, [, \, ], ^, _, `, a, b, c, ..., z

答案 1 :(得分:-1)

你应该尝试像regexpal这样的工具来测试这样的东西。这是你的榜样:

http://regexpal.com/?flags=g&regex= ^%5BA-Z%5D%2B&安培;输入=α%5Bhref *%3D%5C%22test%5C%22%5D

对我来说奇怪的是小写" z" - 由于某种原因,这是允许支架通过。

试试这个:

^[^\[]+

http://regexpal.com/?flags=g&regex= ^%5B ^%5C%5B%5D%2B&安培;输入=α%5Bhref *%3D%5C%22test%5C%22%5D